我在c ++中编写了一个函数来从字符串中删除括号,但它并不总是因为某些原因而将它们全部捕获,我确信它非常简单.
string sanitize(string word)
{
int i = 0;
while(i < word.size())
{
if(word[i] == '(' || word[i] == ')')
{
word.erase(i,1);
}
i++;
}
return word;
}
Run Code Online (Sandbox Code Playgroud)
样本结果:
输入:((3)8)8)8)8))7
产出:(38888)7
为什么是这样?我可以通过调用输出上的函数来解决问题(因此运行字符串两次),但这显然不是"好"的编程.谢谢!
Dan*_*her 11
if(word[i] == '(' || word[i] == ')')
{
word.erase(i,1);
}
i++;
Run Code Online (Sandbox Code Playgroud)
如果删除括号,则下一个字符将移动到先前由括号占据的索引,因此不会检查它.用一个else.
if(word[i] == '(' || word[i] == ')')
{
word.erase(i,1);
} else {
i++;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |