Leetcode-165
如题,这种题目首先要做的肯定是按'.'分割字符串。下面是我总结的两种分割字符串的方法。
首先,使用istringstream和getline进行分割:
string version1 = "1.0.0.1";
vector<int> v1;
istringstream s1(version1);
string temp;
while(getline(s1,temp,'.')){
v1.push_back(stoi(temp));
}
其次,还有一个傻瓜办法:
string version1 = "1.0.0.1";
vector<int> v1;
string temp;
for(int i = 0;i<version1.size();++i){
if(version1[i] != '.')
temp += version[i];
else{
v1.push_back(stoi(temp));
temp.clear();
}
}
if(temp != "") v1.push_back(stoi(temp));
下面附上该题的方法:
class Solution {
public:
int compareVersion(string version1, string version2) {
vector<int> v1,v2;
istringstream s1(version1);
istringstream s2(version2);
string temp;
while(getline(s1,temp,'.')){
v1.push_back(stoi(temp));
}
while(getline(s2,temp,'.')){
v2.push_back(stoi(temp));
}
while(v1.size()>v2.size()){
v2.push_back(0);
}
while(v1.size()<v2.size()){
v1.push_back(0);
}
for(int i = 0;i<v1.size();++i){
if(v1[i] > v2[i]){
return 1;
}
if(v1[i] < v2[i]){
return -1;
}
}
return 0;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。