LeetCode--Compare Version Numbers

来源:互联网 发布:engadget 知乎 编辑:程序博客网 时间:2024/04/26 15:06

Compare two version numbers version1 and version1.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

class Solution {public:    int compareVersion(string version1, string version2) {        <span style="white-space:pre"></span>vector<int> s1 = string_to_int(version1);vector<int> s2 = string_to_int(version2);int n = s1.size();int m = s2.size();int hold = n>m ? m:n;for(int i=0; i<hold; i++){if(s1[i] > s2[i])return 1;else if(s1[i] < s2[i])return -1;}if(m==n)return 0;else if(m == hold){for(int i=m; i<n; i++)if(s1[i] != 0)return 1;return 0;}else {for(int i=n; i<m; i++)if(s2[i] != 0)return -1;return 0;}    }vector<int> string_to_int(string s){vector<int> res;int n = s.length();double temp = 0;bool falg = false;for(int i=0;i<n;i++){if(s[i] == '.'){res.push_back(temp);falg = true;temp = 0;continue;}temp = temp*10 + s[i]-48; }res.push_back(temp);return res;}};


1 0
原创粉丝点击