解题思路:
先用一个辅助字符串来获取给定字符串中的所有数字。
获取数字字符串后,我们仔细观察题目,发现前面一直都是3个3个放到一起中间加一个-,最后如果剩4个,就两个两个放一起,如果剩3个或者两个就直接按照原样子就可,那我们就可以通过多3取余来区分两种情况,从而对特殊情况进行特殊处理。
代码如下:
class Solution {
public:
string reformatNumber(string number) {
string digits;
string res;
int n=number.size();
int i,j=0;
for(i=0;i<n;i++)
{
if(number[i]!=' '&&number[i]!='-')
digits.push_back(number[i]);
}
n=digits.size();
if(n%3==1)
{
for(i=0;i<n;i++)
{
if(i>=n-4)
{
res.push_back(digits[i]);
j++;
if(j==2&&i!=n-1)
{
res.push_back('-');
j=0;
}
}
else
{
res.push_back(digits[i]);
j++;
if(j==3)
{
res.push_back('-');
j=0;
}
}
}
}
else
{
for(i=0;i<n;i++)
{
res.push_back(digits[i]);
j++;
if(j==3&&i!=n-1)
{
res.push_back('-');
j=0;
}
}
}
return res;
}
};