下面的代码用于将字符串中的连续重复字符替换为仅出现一次
e.g. "AAAABBBB" -> "AB"
当我退出 for 循环并在 temp 中打印值时,我的期望是获取字符串单词的最后一个字母。但是,我得到了字符串的第一个字母(即,使用我初始化 temp 的值)。
string processString(string word) {
char temp = word[0];
string result = "";
int size = word.size();
for(int i=0, temp=word[0]; i<size; i++) {
if(word[i] == temp) {
continue;
} else {
result += temp;
temp = word[i];
}
}
cout << "TEMP : " << temp << endl;
return result + temp;
}
结果:
WORD: CJXEJACCAJEXJF
TEMP: C
Output of function: CJXEJACAJEXJC
但是,如果我删除 for 循环中的重新初始化,上面的代码工作得很好:
string processString(string word) {
char temp = word[0];
string result = "";
int size = word.size();
for(int i=0; i<size; i++) {
if(word[i] == temp) {
continue;
} else {
result += temp;
temp = word[i];
}
}
cout << "TEMP : " << temp << endl;
return result + temp;
}
结果:
WORD: CJXEJACCAJEXJF
TEMP: F
Output of function: CJXEJACAJEXJF
任何线索为什么会这样?为什么在 FOR 循环中重新初始化它会产生如此大的差异?