我正在学习C++,并且其中一个练习(Accelerated C++)是编写一个发现回文的小程序。比较字符串显示不等于
为此,我创建了一个载有几个单词的向量,然后我遍历这个向量来查找回文。 迭代时,我创建每个单词的副本,将其颠倒过来,然后比较反转的副本是否与原始单词匹配。
using namespace std;
vector<string> palindrome(vector<string> v){
for(std::vector<string>::iterator iter = v.begin(); iter != v.end(); ++iter){
string reversed_word;
for(int i = iter->size(); i >= 0; i--){
reversed_word += (*iter)[i];
}
if (!(*iter).compare(reversed_word)){
cout << reversed_word << endl;
}
cout << reversed_word << endl;
cout << *iter << endl;
}
return v
}
int main(){
vector<string> dictionnary;
dictionnary.push_back("coloc");
dictionnary.push_back("elle");
dictionnary.push_back("php");
dictionnary.push_back("shahs");
dictionnary.push_back("bonjour");
dictionnary.push_back("random");
palindrome(dictionnary);
return 0;
}
然而,条件!(*iter).compare(reversed_word)
好好尝试返回什么预期是回文词。为了检查,我已经显示了单词和相反的单词,并且它们匹配。
缺少什么我在这里?
'iter <= v.end()'很少是正确的。 “结局”从不指向任何事物;它总是无效的。这个习语是'!= v.end()'。 – Potatoswatter
回文没有任何回报。我不认为这会编译。 – stark
@Potatoswatter感谢您指出了这一点,我从一个整数切换到interator后没有改变这一点。我会编辑它 –