最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • Compare Version Numbers

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42342251

    Compare two version numbers version1 and version1.
    If version1 > version2 return 1, if version1 < version2 return ⑴, otherwise return 0.

    You may assume that the version strings are non-empty and contain only digits and the . character.
    The . character does not represent a decimal point and is used to separate number sequences.
    For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth
    second-level revision of the second first-level revision.

    Here is an example of version numbers ordering:

    0.1 < 1.1 < 1.2 < 13.37


    思路:

    (1)题意为比较版本号大小。但是版本号可以包括多个小数点,例如1.0.0.1和1.0.0.0.2这样的情况也会产生。

    (2)判断进程分为几种情况:如果给定的版本号包括“.”,则需要将其中的字符分开并存到链表中,如果不包括,则直接存入链表便可。

    (3)两个版本号都存入到链表,遍历较长的链表,进行比较判断,直到从两个链表取出的字符对应的整数值不相等,则返回判断得到的值;如果遍历完较短的链表还未判断出大小,则视较短链表后续元素为0与较长链表进行比较,直到较长链表遍历完成为止,返回对应的值。(由于可能出现类似1.1.0.0.0、1.1.0.0.1和1.1之间的比较,此时必须遍历完较长的链表)

    (4)下面简单举例子说明:

         对1.1.0.1和1.1.0

           a:对应的链表(以数组表示)为[1,1,0,1]和[1,1,0]

           b:遍历完前3次后,其对应的位置上的值都相等,而此时[1,1,0]所有元素都遍历完了,但是还需要继续,将[1,1,0]“第4个位置”元素设为            0进行比较,此时得到1,1,0,1]对应的元素要大于0,即1.1.0.1 > 1.1.0,返回对应结果。

           c:类似1.1.1.0和1.1.1.0.0的比较类似,在此不举例子说明。

    (5)代码很长,但是思路还是比较清晰的,希望对你有所帮助。


    算法代码实现以下:

    public static int compareVersion(String version1, String version2) {
    List<String> list1 = new LinkedList<String>();

    if(version1.contains(".")){
    char[] charArray = version1.toCharArray();
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < charArray.length; i++) {
    if(charArray[i]!='.'){
    buffer.append(charArray[i]);
    if(i==charArray.length⑴){
    list1.add(buffer.toString());
    }
    }else{
    list1.add(buffer.toString());
    buffer.setLength(0);
    }

    }
    }else{
    list1.add(version1);
    }

    List<String> list2 = new LinkedList<String>();
    if(version2.contains(".")){
    char[] charArray = version2.toCharArray();
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < charArray.length; i++) {
    if(charArray[i]!='.'){
    buffer.append(charArray[i]);
    if(i==charArray.length⑴){
    list2.add(buffer.toString());
    }
    }else{
    list2.add(buffer.toString());
    buffer.setLength(0);
    }
    }
    }else{
    list2.add(version2);
    }

    int max = list1.size() >= list2.size()? list1.size():list2.size();

    for (int i = 0; i < max; i++) {
    if(list1.size()>=list2.size()){
    if(i>list2.size()⑴){
    if(compare(list1.get(i),"0")==0){
    continue;
    }else{
    return compare(list1.get(i),"0");
    }
    }else{
    if(compare(list1.get(i),list2.get(i))==0){
    continue;
    }else{
    return compare(list1.get(i),list2.get(i));
    }
    }
    }

    if(list2.size()>list1.size()){
    if(i>list1.size()⑴){
    if(compare("0",list2.get(i))==0){
    continue;
    }else{
    return compare("0",list2.get(i));
    }
    }else{
    if(compare(list1.get(i),list2.get(i))==0){
    continue;
    }else{
    return compare(list1.get(i),list2.get(i));
    }
    }
    }

    }

    return 0;
    }

    public static int compare(String s1, String s2){
    int v1 = Integer.parseInt(s1);
    int v2 = Integer.parseInt(s2);
    if(v1>v2){
    return 1;
    }else if(v1<v2){
    return ⑴;
    }else{
    return 0;
    }
    }

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » Compare Version Numbers

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级