LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
C++中分割字符串的函数使用起来不是很方便,所以用C++解决该题,双指针是个不错的办法,定义两个指针分别遍历两个字符串,把“.”间隔的每个小段作为比较的对象,把0去掉的部分进行比较(算数比较),如果哪部分不同就根据大小返回1或者-1,如果都相同,那么最后返回0,代码如下:
class Solution {
public:
int compareVersion(string version1, string version2) {
// 定义双指针
int index1 = 0, index2 = 0;
// 不超过两个字符串的长度
while(index1 < version1.length() || index2 < version2.length()) {
// 每小段(两个.之间)进行比较
int num1 = 0, num2 = 0;
while(index1 < version1.length() && version1[index1] != '.') num1 = num1 * 10 + version1[index1 ++] - '0';
while(index2 < version2.length() && version2[index2] != '.') num2 = num2 * 10 + version2[index2 ++] - '0';
if(num1 < num2) {
return -1;
} else if(num1 > num2) {
return 1;
}
index1 ++;
index2 ++;
}
return 0;
}
};
/*作者:heroding
链接:https://leetcode-cn.com/problems/compare-version-numbers/solution/cshuang-zhi-zhen-by-heroding-sjc1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
以上是关于LeetCode 165 比较版本号[双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章