做力扣1694. Reformat Phone Number时,编译出错
Line 18: Char 17: error: expected expression
if(k!=0&&k%3==0) ans+=’-’;
原代码如下。
class Solution {
public:
string reformatNumber(string number) {
int acnt=0;
for(int i=0;i<number.size(); ){
if(number[i]>='0'&&number[i]<='9') i++;
else{
number.erase(number.begin()+i);
}
}
if(number.size()<4) return number;
while(number.size()%3) number+="a";
string ans;
int k=0;
for(int i=0;i<number.size();i++){
if(number[i]=='a') acnt++;//18行
else(
if(k!=0&&k%3==0) ans+='-';
ans+=number[i];
k++;
)
}
if(acnt==2) swap(ans[ans.size()-2],ans[ans.size()-3]);//23行
return ans;
}
};
看到18行,判断逻辑没有问题啊,一开始还没有看出来,弄回本地IDE时,突然发现,这个地方应该是{ },即大括号,不应该是()小括号。
另外,这个修改之后,又有了新的问题。
Line 23: Char 21: error: no matching function for call to ‘swap’
if(acnt==2) swap(ans.size()-2,ans.size()-3);
提示说是23行出错,不匹配swap函数,一开始,我还以为是swap拼写错了,再一看,发现这是试图交换两个数,本意为交换这两个数组下标中的元素。修改为:
if(acnt==2) swap(ans[ans.size()-2],ans[ans.size()-3]);
就可以了。