题解 | #比较版本号#
比较版本号
http://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ public int compare (String version1, String version2) { // write code here // 从start到end是就是 .分割的各段,使用numi记录version1此段的值 int i_start = 0, j_start = 0; int i_end = 0, j_end = 0; int numi = 0, numj = 0; // eg:1.1 vs 1.1.1 等价于比较 1.1.0 vs 1.1.1 while(i_end < version1.length() || j_end < version2.length()){ if(i_end >= version1.length()){ numi = 0; }else{ // 以.为分割位 while(i_end < version1.length() && version1.charAt(i_end) != '.'){ i_end++; } numi = Integer.parseInt(version1.substring(i_start,i_end)); // 开始记录下一段的 起始索引 和 结束索引+1 i_start = ++i_end; } if(j_end >= version2.length()){ numj = 0; }else{ while(j_end < version2.length() && version2.charAt(j_end) != '.'){ j_end++; } numj = Integer.parseInt(version2.substring(j_start,j_end)); j_start = ++j_end; } // 比较当前段的大小 if(numi > numj){ return 1; }else if(numi < numj){ return -1; } } return 0; } }