我的目标是通过命令行输入,然后我的代码获取输入,进行复制并在我的反向函数中对其进行反向。然后返回反转回文为rev。
我尝试在我的strcmp(x,y == 0)函数中调用我的反向函数,这给了我一些问题,我继续尝试初始化第二个char数组,然后复制reverse(palindrome)进行比较。
我不确定从这里去哪里。任何帮助,将不胜感激。
#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
答案 0 :(得分:1)
仅使用==
来比较原始版本和使用反向迭代器初始化的初始化std::string
,例如
#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
答案 1 :(得分:0)
按索引检查索引不是更好吗?
while(true){
if(palindrome[i]!=palindrome[j];
return false;
}
ofc我从头开始,j从头开始。如果数字是奇数,应自行检查