我用C ++编写代码来删除任何两个相同的连续字符。 例如:
- aa -> empty string - aabb -> empty string - abba -> aa -> empty string (as removal of 'bb' makes it 'aa') - abab -> abab (not possible)
#include <iostream>
using namespace std;
int main()
{
int i;
string s;
bool match = true;
getline(cin, s);
while (match) {
match = false;
for (i = 0; i < s.length() - 1; i++) {
if (s.at(i) == s.at(i+1)) {
s.erase(i,2);
match = true;
}
}
}
if (s == "") {
cout << "Empty!";
}
else {
cout << s;
}
return 0;
}
答案 0 :(得分:3)
s.length()
未签名且s.length() - 1
为0时s.length()
会非常大。
在执行减法之前,您应该检查s.length()
是否为零:
for (i = 0; s.length() > 0 && i < s.length() - 1; i++) {