题解 | #比较版本号#

比较版本号

http://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 比较版本号
     * @param version1 string字符串 
     * @param version2 string字符串 
     * @return int整型
     */
    public int compare (String version1, String version2) {
        // write code here
        if(version1 == null || version2 == null){
            return -1;
        }
        String[] data1 = version1.split("\\.");
        String[] data2 = version2.split("\\.");
        
        int len = Math.max(data1.length, data2.length);
        for(int i = 0;i < len;i++){
            String a = i < data1.length ? data1[i] : "0";
            String b = i < data2.length ? data2[i] :"0";
            
            for(int j = 0;j< a.length(); j++){
                //遇到开头数字为0的,去掉前缀0,如果全为0的直接截取最后一位即可。
                if(j == a.length() - 1 || a.charAt(j) != '0'){
                    a = a.substring(j);
                    break;
                }
            }
              for (int j = 0; j < b.length(); j++) {
                if (j == b.length() - 1 || b.charAt(j) != '0') {
                    b = b.substring(j);
                    break;
                }
            }
            if(a.length() > b.length()){
                return 1;
            }else if(a.length() < b.length()){
                return -1;
            }else{
                if(a.compareTo(b) > 0){
                    return 1;
                }else if( a.compareTo(b) < 0){
                    return -1;
                }
            }
        }
        return 0;
        
        //下面方***数组越界 需要考虑到使用BigInteger,实际情况可能会用时间戳作为标本
//         int index = 0;
//         while(index < data1.length && index < data2.length){
//             int a = Integer.parseInt(data1[index]);
//             int b = Integer.parseInt(data2[index]);
//             if(a > b){
//                 return 1;
//             }else if(a < b){
//                 return -1;
//             }
//             index ++;
//         }
//         if(index >= data1.length){
//             for(int i = index;i < data2.length;i++){
//                 int c = Integer.parseInt(data2[i]);
//                 if(c != 0){
//                     return -1;
//                 }
//             }
//             return 0;
//         }
//         if(index >= data2.length){
//              for(int i = index;i < data1.length;i++){
//                 int c = Integer.parseInt(data1[i]);
//                 if(c != 0){
//                     return 1;
//                 }
//             }
//             return 0;
//         }
//         return 0 ;
    }
}
全部评论

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从今天开始狠狠卷JVAV_癫:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 15:18
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务