解决的思路在于,怎么截取每一段 xxx. 内的值,关键在于一个大while和两个嵌套大小while循环。

1、通过一个大while和两个嵌套大小while循环,驱动截取v1和v2的字符串;

2、通过 num = num*10 + s.chatAt(i) - '0',转变成大小进行比较计算。

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 比较版本号
     * @param version1 string字符串
     * @param version2 string字符串
     * @return int整型
     */
    public int compare (String version1, String version2) {
        if (version1 == null && version2 == null) {
            return 0;
        }

        // 获取版本号长度
        int n1 = version1.length(), n2 = version2.length();
        int dotIndex1 = 0, dotIndex2 = 0;
        int i = 0, j = 0;
        // 第一个while 驱动两个字符串工作
        while (i < n1 || j < n2) {
            // 第二个while驱动截取v1点之前的数值
            long num1 = 0;
            while (i < n1 && version1.charAt(i) != '.') {
                num1 = num1 * 10 + version1.charAt(i) - '0';
                i++;
            }

            //跳过version1的点号
            i++;

            // 第三个while驱动截取v2点之前的数值
            long num2 = 0;
            while (j < n2 && version2.charAt(j) != '.') {
                num2 = num2 * 10 + version2.charAt(j) - '0';
                j++;
            }

            //跳过version2的点号
            j++;

            //比较截取.号前数字大小,如果相等就要等到下一个点号的值对比
            if(num1 > num2) {
                return 1;
            } 
            if(num1 < num2) {
                return -1;
            }

        }

        return 0;
    }
}