本文已参与「新人创作礼」活动,一起开启掘金创作之路。
问题
思路
利用 getline() 对版本号进行分割,得到修订号,针对有前导 0 的修订号,利用 stringstream 转换成 int 类型。
代码实现
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
int compare(string version1, string version2) {
// write code here
stringstream ss1, ss2, sstmp;
string tmp;
int v1, v2;
ss1 << version1;
ss2 << version2;
// 有一个字符串先到末尾,还有读取另一个字符串
while (!ss1.eof() || !ss2.eof())
{
if (ss1.eof()) v1 = 0;
else
{
// 以 '.' 为分割符号,每次进入循环读取以 '.'分割的字符串
getline(ss1, tmp, '.');
// 将读取的字符串转换成 int
sstmp << tmp;
sstmp >> v1;
sstmp.clear();
}
if (ss2.eof()) v2 = 0;
else
{
getline(ss2, tmp, '.');
sstmp << tmp;
sstmp >> v2;
sstmp.clear();
}
if (v1 > v2) return 1;
if (v1 < v2) return -1;
}
return 0;
}
};