leetcode----165. Compare Version Numbers

链接:

https://leetcode.com/problems/compare-version-numbers/

大意:

给定两个表示版本的字符串version1和version2,比较两个版本的大小。规定:两个字符串都是非空且不会以'.'开始和结尾,且它们的每个字符都是数字或者'.','.'不代表小数点,而是表示上一个版本号。如果version1 > version2,则返回1;如果version1 < version2,则返回-1;否则返回0.例子:

思路:

  1. 使用字符串的split分割函数对两个字符串按'.'分割,得到两个字符串数组
  2. 依次比较两个数组对应位置字符串形成的long型数字大小。若可以比较出谁大谁小,则可直接返回结果。若相等,则继续比较下一位置。
  3. 若某一字符串数组比较完毕都没有分出谁胜谁负,那么还未比较完的字符串数组中的元素转为long型后依次与0L比较,返回结果

代码:

class Solution {
    public int compareVersion(String version1, String version2) {
        String[] strs1 = version1.split("\\."), strs2 = version2.split("\\.");
        // System.out.println(Arrays.toString(strs1) + ":" + Arrays.toString(strs2));
        int i = 0;
        while (i < strs1.length && i < strs2.length) {
            if (Long.parseLong(strs1[i]) - Long.parseLong(strs2[i]) > 0)
                return 1;
            else if (Long.parseLong(strs1[i]) - Long.parseLong(strs2[i]) < 0)
                return -1;
            i++;
        }
        while (i < strs1.length) {
            if (Long.parseLong(strs1[i]) != 0L)
                return 1;
            i++;
        }
        while (i < strs2.length) {
            if (Long.parseLong(strs2[i]) != 0L)
                return -1;
            i++;
        }
        return 0;
    }
}

结果:

结论:

基础字符串处理题 

 

 

猜你喜欢

转载自blog.csdn.net/smart_ferry/article/details/89468657