数回文词
Counting palindrome words
本文关键字:回文 更新时间:2023-10-16
我得到了一个文本,我需要数一数它有多少个回文单词。无论我输入多少回文,它总是返回 1。我的尝试 :
#include <iostream>
#include <string.h>
using namespace std;
char s[255],*p,aux[20];
int n,c,k;
int main()
{
cin.get(s,255);cin.get();
p=strtok(s," ?.,;");
while(p)
{
for(int i=strlen(p)-1;i>=0;i--)
{
aux[k]=p[i];
k++;
}
if(strcmp(aux,p)==0)c++;
p=strtok(NULL," ?.,;");
}
cout<<c;
return 0;
}
在 for 循环之前初始 k=0,计数器 c=0 并使用字符串终止符末尾的 '\0'。
char s[255], *p, aux[20];
cin.get(s, 255); cin.get();
p = strtok(s, " ?.,;");
vector<string> words;
int c = 0,k;
while (p)
{
k = 0; // see here
for (int i = strlen(p) - 1; i >= 0; i--,k++)
{
aux[k] = p[i];
}
aux[k] = ' '; // and here
if (strcmp(aux, p) == 0)c++;
p = strtok(NULL, " ?.,;");
}
cout << c << 'n';
根据Sam Varshavchik的建议,避免使用char*,使用std::string和std::stringstream。使用 std::string 回文评估可以使用如下所示的单行代码完成:
while (p)
{
string str(p);
if (str == string(str.rbegin(), str.rend())) {
c++;
}
p = strtok(NULL, " ?.,;");
}
相关文章:
- C++:正在检查LinkedList中的回文-递归方法-错误
- Usaco第1.6节主要回文
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 将 S1 转换为回文,并将 S2 作为其子字符串
- 数回文词
- 最长的回文子串(C++帮助)
- 有人可以详细解释这个回文代码是如何工作的吗?
- 回文递归版本
- 如何检查C ++ STL列表是否为回文?
- 回文数在 1 到 10000 之间
- C++ - 检查结构数据类型中的单词是否为回文
- 是回文作业练习
- 回文递归不停止
- 整数数组中最长的回文
- 回文测试
- 最大的回文产品(Project Euler)——C++
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 递归回文问题的时间复杂度,C++
- 程序以查找给定字符串中回文的子字符串的数量
- 递归回文检查,不使用向量、大小或其他参数