NC104 题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
官方解法:双指针
import java.util.*; public class Solution { public int compare (String version1, String version2) { // 两个版本号的长度 int n1 = version1.length(); int n2 = version2.length(); // 双指针 int i = 0, j = 0; while (i < n1 || j < n2) { //直到某个字符串结束 long num1 = 0; //从下一个点前截取数字,每次比较ver1和ver2每个段的值的大小 while (i < n1 && version1.charAt(i) != '.') { // 因为每次只比较一个段(也就是点之前),所以这样处理可以解决前导0的问题,因为前导0*10还是等于0 num1 = num1 * 10 + (version1.charAt(i) - '0'); i++; } //跳过点 i++; long num2 = 0; //从下一个点前截取数字 while (j < n2 && version2.charAt(j) != '.') { num2 = num2 * 10 + (version2.charAt(j) - '0'); j++; } //跳过点 j++; //比较数字大小 if (num1 > num2) return 1; if (num1 < num2) return -1; } //版本号相同 return 0; } }