题解 | #比较版本号#
比较版本号
https://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 //这里添加一个.,是为了处理“1”没有.的情况 StringBuffer sb1 = new StringBuffer(version1); sb1.append("."); version1 = sb1.toString(); StringBuffer sb2 = new StringBuffer(version2); sb2.append("."); version2 = sb2.toString(); //转义字符.得用\\.转义 String[] ver1 = version1.split("\\."); String[] ver2 = version2.split("\\."); int i =0; int j=0; //首先遍历相同长度部分 while(i<ver1.length&&j<ver2.length){ int v1 =Integer.parseInt(ver1[i++]) ; int v2 = Integer.parseInt(ver2[j++]); if(v1>v2) return 1; else if(v1<v2) return -1; } //如果第一个版本号未遍历完 while(i<ver1.length){ int v1 =Integer.parseInt(ver1[i++]) ; //如果存在不等于0的值,直接判定v1大 if(v1!=0) return 1; } //如果第二个版本号未遍历完 while(j<ver2.length){ int v2 = Integer.parseInt(ver2[j++]); //如果存在不等于0的值,直接判定v2大 if(v2!=0) return -1; } return 0; } }