一、題目
二、思路解析
? ? ? ? 1.思路:
? ? ? ? ? ? ? ? 比較的是兩個版本號它們以“.”作為分割的部分的有效值(即數值)是否一致
? ? ? ??2.常用方法:
? ? ? ? ? ? ? ? 1.s.split("\\規則"),將字符串按參數規則進行分割并存儲在字符串數組中
String[] str = s.split("\\."); //按“.”進行分割得到對應的幾段子字符串,并依次存入str數組中
? ? ? ? ? ? ? ? 2.Integer.parseInt(參數),將參數的類型轉換為int類型
int num=Integer.parseInt(str[i]);
? ? ? ? 3.核心邏輯:
? ? ? ? ? ? ? ? 1.將兩個版本號分別根據自己的“.”進行分割轉為string數組
String[]str1=version1.split("\\.");
String[]str2=version2.split("\\.");
? ? ? ? ? ? ? ? 2.獲取兩個版本號對應數組中最大的長度,因為要比對二者版本是否一致,需要比對所有數值
int maxLen=Math.max(str1.length,str2.length);
? ? ? ? ? ? ? ? 3.遍歷,獲取到對應數組下標的元素,進行比對
? ? ? ? ? ? ? ? ? ? ? ? √.注意事項:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當前下標大于數組的長度時,?此時補0
for(int i=0;i<maxLen;i++){int num1=i<size1?Integer.parseInt(str1[i]):0;int num2=i<size2?Integer.parseInt(str2[i]):0;if(num1!=num2){return num1<num2?-1:1;
}
}return 0;
三、代碼實現
class Solution {public int compareVersion(String version1, String version2) {String[]str1=version1.split("\\.");String[]str2=version2.split("\\.");int maxLen=Math.max(str1.length,str2.length);for(int i=0;i<maxLen;i++){int num1=i<str1.length?Integer.parseInt(str1[i]):0;int num2=i<str2.length?Integer.parseInt(str2[i]):0;if(num1!=num2){return num1<num2?-1:1;}}return 0;}