I wrote a function in c++ to remove parenthesis from a string, but it doesn’t always catch them all for some reason that I’m sure is really simple.
string sanitize(string word)
{
int i = 0;
while(i < word.size())
{
if(word[i] == '(' || word[i] == ')')
{
word.erase(i,1);
}
i++;
}
return word;
}
Sample result:
Input: ((3)8)8)8)8))7
Output: (38888)7
Why is this? I can get around the problem by calling the function on the output (so running the string through twice), but that is clearly not “good” programming. Thanks!
If you erase a parenthesis, the next character moves to the index previously occupied by the parenthesis, so it is not checked. Use an
else.