题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
难度不大,不过少有地一次调试都没有秒杀了……庆祝一下
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
void core(string&version,vector<int>& v){
int i=0,j=0,k=0,l=0;
for(i=0;i<version.size();i++){
for(j=i;version[j]!='.'&&j<version.size();j++){
}
string s;
for(k=i;k<=j;k++){
s+=version[k];
}
v[l]=stoi(s);
l++;
i=j;
}
}
int compare(string version1, string version2) {
// write code here
int i=0,j=0,k;
for(auto c : version1){
if(c!='.')i++;
}
for(auto c:version2){
if(c!='.')j++;
}
k=max(i,j)+1;//版本号被分割了多少部分
vector<int> v1(k,0),v2(k,0);
core(version1,v1);
core(version2,v2);
for(i=0;i<k;++i){
if(v1[i]>v2[i]){return 1;
}else if(v2[i]>v1[i]){
return -1;
}
}
return 0;
}
};
查看10道真题和解析