题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7?tpId=295&tqId=1024572&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj
class Solution { public: int compare(string version1, string version2) { // write code here int i=0,j=0; int length1 = version1.size(),length2 = version2.size(); while(i<length1 && j<length2) { int num1=0,num2=0; while(i<length1 && version1[i]!='.') { num1 = num1*10 + version1[i]-'0'; i++; } while(j<length2 && version2[j]!='.') { num2 = num2*10 +version2[j]-'0'; j++; } if(num1>num2) return 1; if(num2>num1) return -1; i++,j++; } while(i<length1) { if(version1[i] != '0' && version1[i] !='.') return 1; else i++; } while(j<length2) { if(version2[j] != '0' && version2[j] !='.') return -1; else j++; } return 0; } };
定义一个i,j指针依次去遍历string。
每次进去拿出一个修订号,只有version[i/j]=='.'才停止。
然后比较即可。
最后需要注意一下如果全为0得遍历才可知道是否有问题。
#牛客创作赏金赛#牛客网刷题记录 文章被收录于专栏
本人认为值得记录的一些题