回文测试
CString palindrome test
我的目标是通过命令行输入,然后我的代码获取输入,复制并在我的反向函数中反转它。然后返回反转的回文作为 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
使用==
来比较原始和用反向迭代器初始化的初始化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 palindromen";
else
std::cout << s << " is NOT a palindromen";
}
}
这打破了实际的反转,并比较为一个简单的:
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
逐个索引检查索引不是更好吗?
while(true){
if(palindrome[i]!=palindrome[j];
return false;
}
OFC I 从开头开始,j 从长度开始。如果数字是奇数,它应该自己检查
相关文章:
- C++:正在检查LinkedList中的回文-递归方法-错误
- Usaco第1.6节主要回文
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 将 S1 转换为回文,并将 S2 作为其子字符串
- 数回文词
- 最长的回文子串(C++帮助)
- 有人可以详细解释这个回文代码是如何工作的吗?
- 回文递归版本
- 如何检查C ++ STL列表是否为回文?
- 回文数在 1 到 10000 之间
- C++ - 检查结构数据类型中的单词是否为回文
- 是回文作业练习
- 回文测试
- 需要帮助进行回文测试
- 测试回文时程序不会继续运行 (C++)
- C++回文检查解决方案被一个测试用例跳闸
- 回文测试功能
- 堆栈和队列以测试回文
- 使用不同的函数(C++)测试一个数字是否是回文
- c++ cin.ignore忽略空格、数字和字符来测试回文