解决的思路在于,怎么截取每一段 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; } }