用C++统计句子中回文单词的个数


给定一个包含英文句子的字符串,目标是找到字符串中回文单词的数量。回文词是指从开头或结尾读都具有相同字母顺序的单词。如果句子是“Madam speaks good Malayalam”,那么回文单词的数量是2。(Madam 和 Malayalam)

注意 − 单词可以包含大写和小写字母。

让我们通过例子来理解。

输入 − str = "My Mom and Anna left at Noon";

输出 − 句子中回文单词的数量为 − 3

解释 − 上述句子中的回文单词为 − Mom、Anna 和 Noon。(字母的大小写无关紧要)

输入 − str= “I am at level 121 in Racecar game”

输出 − 句子中回文单词的数量为 − 4

解释 − 上述句子中的回文单词为 − I、level、121、Racecar。(字母的大小写无关紧要)

下面程序中使用的方法如下

我们将在句子中以空格“ ”为分隔符获取每个单词,并将其传递给一个函数。该函数将单词的字符转换为小写。现在从单词的第一个字符开始遍历,并将word[0]与word[length-1]、word[1]与word[length-2]等进行比较。如果出现任何不匹配,则中断循环,否则返回true。

  • 使用包含句子的字符串数组 str[]。

  • 函数 check(string extra) 获取一个字符串,如果字符串是回文则返回 true,否则返回 false。

  • 计算字符串 extra 的长度为 len=extra.length()。

  • 使用 (extra.begin(), extra.end(), extra.begin(), ::tolower); 将整个字符串转换为小写。

  • 使用 for 循环从单词的索引 0 开始遍历到索引 < len。

  • 比较 extra[i] == extra[len-1]。如果出现不匹配,则返回 false。否则返回 true。

  • 函数 palindrome(string str, int length) 获取一个句子及其长度,并返回其中回文单词的数量。

  • 将初始计数设置为 0。

  • 使用临时字符串 extra="" 来选择和存储单个单词。

  • 使用 for 循环从索引 0 开始遍历句子到 i < length。

  • 获取临时字符 temp=str[i]。

  • 如果 temp 不是空格,则将其添加到 extra 以构成一个单词。

  • 如果 temp 不是空格,则如果 (check(extra)) 返回 true,则计数加 1。

  • 再次将 extra 设置为 ""。

  • 最后的计数将包含回文单词的总数。

  • 返回计数作为结果。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
bool check(string extra){
   int len = extra.length();
   transform(extra.begin(), extra.end(), extra.begin(), ::tolower);
   for (int i = 0; i < len; i++,len--){
      if (extra.at(i) != extra.at(len - 1)){
         return false;
      }
   }
   return true;
}
int palindrome(string str, int length){
   int count = 0;
   string extra = "";
   for (int i = 0; i < length; i++){
      char temp = str.at(i);
      if (temp != ' '){
         extra = extra + temp;
      }
      else{
         if (check(extra))
            { count++; }
         extra = "";
      }
   }
   return count;
}
int main(){
   string str = "nitin wants nitin for his company named nitin after nitin";
   str = str + " ";
   int length = str.length();
   cout<<"Count of palindrome words in a sentence are: "<<palindrome(str, length)<<endl;
   return 0;
}

输出

如果我们运行上述代码,它将生成以下输出:

Count of palindrome words in a sentence are: 4

更新于:2020年12月2日

2K+ 次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告