用C++计算一个句子中的回文词
我们得到一个包含英语句子的字符串。目标是找到字符串中回文的单词数。回文词是那些从头或尾阅读时具有相同字母顺序的词。如果句子是“MadamspeakgoodMalayalam”,则回文词的数量为2。(Madam和Malayalam)
注意-单词可以包含大写和小写字母。
让我们通过例子来理解。
输入-str="我妈妈和安娜中午离开了";
输出-句子中回文词的数量是-3
解释-上面句子中的回文词是-妈妈,安娜和中午。(不考虑字母的大小写)
输入-str=“我在Racecar游戏中的第121级”
输出-句子中回文词的数量是-4
解释-上面句子中的回文词是-I,level,121,Racecar。(不考虑字母的大小写)
下面程序中使用的方法如下
我们将把句子中空格“”后的每个单词传递给一个函数。该函数将单词的字符转换为小写。现在从单词的第一个字符开始遍历,比较word[0]和word[length-1],word[1]和word[length-2]等等。如果发生任何不匹配,则中断循环否则返回true。
取一个包含句子的字符串数组str[]。
函数check(stringextra)接受一个字符串,如果字符串是回文则返回真,否则返回假。
计算额外的字符串长度为len=。extra.lenght()
使用(,,,::tolower)将整个字符串转换为小写;extra.begin()extra.end()extra.begin()
使用for循环从单词的索引0开始遍历直到index
比较extra[i]==extra[len-1]。如果发生不匹配,则返回false。否则返回真。
函数palindrome(stringstr,intlength)接受一个句子及其长度,并返回其中的回文词数。
取初始计数为0。
使用临时字符串extra=""来挑选和存储单个单词。
使用for循环从索引0开始遍历句子,直到i
取临时字符temp=。str.ar(i)
如果temp不是空格,请将其添加到extra中以构成一个单词。
如果temp不是空格,则if(check(extra))返回true增量计数。
再次制作extra=""。
最后一次计数将包含回文单词的总数。
返回计数作为结果。
示例
#includeusing 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<<"一个句子中的回文词数为: "< 输出结果 如果我们运行上面的代码,它将生成以下输出-
一个句子中的回文词数为: 4