牛客题霸 [比较版本号] C++题解/答案
题目描述
如果version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.
输入的version字符串非空,只包含数字和字符.。.字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.
题解:
将小数点之前的转化成数num1.如果num1一样,依次比小数点后面的
代码:
class Solution {
public:/*** 比较版本号* @param version1 string字符串 * @param version2 string字符串 * @return int整型*/int compare(string version1, string version2) {// write code hereint i = 0; ///note version1int j = 0; ///note version2int num1 = 0;int num2 = 0;while (i<version1.size() && j<version2.size()){char a = version1[i];char b = version2[j];if (a != '.')num1 = num1*10 + (a - '0');if (b != '.') num2 = num2*10 + (b - '0');if (a=='.' && b=='.'){if (num1 > num2)return 1;else if (num1 < num2)return -1;else{num1 = 0;num2 = 0;}}if (a!='.' && b=='.')i++;else if (a=='.' && b!='.')j++;else{i++;j++;}}if (i < version1.size())return 1;if (j < version2.size())return -1;return 0;}
};