链接:
https://leetcode.com/problems/compare-version-numbers/
大意:
给定两个表示版本的字符串version1和version2,比较两个版本的大小。规定:两个字符串都是非空且不会以'.'开始和结尾,且它们的每个字符都是数字或者'.','.'不代表小数点,而是表示上一个版本号。如果version1 > version2,则返回1;如果version1 < version2,则返回-1;否则返回0.例子:
思路:
- 使用字符串的split分割函数对两个字符串按'.'分割,得到两个字符串数组
- 依次比较两个数组对应位置字符串形成的long型数字大小。若可以比较出谁大谁小,则可直接返回结果。若相等,则继续比较下一位置。
- 若某一字符串数组比较完毕都没有分出谁胜谁负,那么还未比较完的字符串数组中的元素转为long型后依次与0L比较,返回结果
代码:
class Solution {
public int compareVersion(String version1, String version2) {
String[] strs1 = version1.split("\\."), strs2 = version2.split("\\.");
// System.out.println(Arrays.toString(strs1) + ":" + Arrays.toString(strs2));
int i = 0;
while (i < strs1.length && i < strs2.length) {
if (Long.parseLong(strs1[i]) - Long.parseLong(strs2[i]) > 0)
return 1;
else if (Long.parseLong(strs1[i]) - Long.parseLong(strs2[i]) < 0)
return -1;
i++;
}
while (i < strs1.length) {
if (Long.parseLong(strs1[i]) != 0L)
return 1;
i++;
}
while (i < strs2.length) {
if (Long.parseLong(strs2[i]) != 0L)
return -1;
i++;
}
return 0;
}
}
结果:
结论:
基础字符串处理题