我的目标是通过命令行输入,然后我的代码接受输入,复制并在我的reverse函数中反转输入。然后返回反转的回文作为rev.
我试着在我的strcmp(x,y == 0)函数内部调用我的反向函数,这给我带来了问题,我继续尝试初始化第二个char数组,然后将反向(回文)复制到它上,然后进行比较。
我不知道下一步该怎么走。任何帮助都将不胜感激。
#include <iostream>
#include <cstring>
using namespace std;
string reverse(string palindrome) {
string rev;
for (int i = 0; i < palindrome.length(); i++)
rev += palindrome[palindrome.length() - 1 - i];
return rev;
}//string reverse closing
int main(int argc, char *argv[]) {
char palindrome[1000] = ""; //empty string
for (int i = 1; i < argc; i++) {
strcat_s(palindrome, 1000, argv[i]);
}
char rev[1000] = "";
strcpy(rev, reverse(palindrome));
if (strcmp(palindrome, rev == 0)){
cout << "The input was a valid palindrome";
}
else if (strcmp(palindrome, rev != 0)) {
cout << "This input was not a valid palindrome";
}
}// Main closing bracket发布于 2019-11-01 06:18:25
只需使用==在原始std::string和使用反向迭代器初始化的初始化an之间进行比较可能容易得多,例如
#include <iostream>
#include <string>
int main (int argc, char **argv) {
for (int i = 1; i < argc; i++) {
std::string s(argv[i]);
if (s == std::string (s.rbegin(), s.rend()))
std::cout << s << " is a palindrome\n";
else
std::cout << s << " is NOT a palindrome\n";
}
}这打破了实际的反转,并向下比较为一个简单的:
if (s == std::string (s.rbegin(), s.rend()))请参阅:std::basic_string::rbegin和std::basic_string::rend
示例使用/输出
$ ./bin/palindromeargv "anna" "bananna" "amanaplanacanalpanama"
anna is a palindrome
bananna is NOT a palindrome
amanaplanacanalpanama is a palindrome发布于 2019-11-01 05:07:51
按索引检查索引不是更好吗?
while(true){
if(palindrome[i]!=palindrome[j];
return false;
}ofc i从头开始,j从长开始。如果数字是奇数,它应该自己检查
https://stackoverflow.com/questions/58651100
复制相似问题