gpt4 book ai didi

c++ - 如何使回文代码不用担心 (userInput) 字间距

转载 作者:行者123 更新时间:2023-11-30 04:46:11 27 4
gpt4 key购买 nike

如标题中所述,我在尝试读取单词之间的空格时遇到问题,例如“从不奇数或偶数”返回为“从不奇数或偶数不是回文”,但它应该说“从不奇数或偶数是回文”。下面我将提供我当前的代码和评分结果以及我似乎无法修复的数字。

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main() {
string userInput;
int startInput;
bool isPalindrome = true;

getline (cin, userInput);

startInput = userInput.length();

for (int i = 0; i<(startInput/2); i++){
if (userInput[i] != userInput[(startInput -1) -i])
isPalindrome = false;
}
if (isPalindrome == true){
cout << userInput << " is a palindrome" << endl;
}
else {
cout << userInput << " is not a palindrome" <<endl;
}

return 0;
}

3:输入:从不奇数或偶数你的输出:从不奇数或偶数不是回文预期输出:从不奇数或偶数是回文

5:输入:尴尬博士您的输出:尴尬博士不是回文预期输出:dr awkward 是一个回文数

7:输入:没有柠檬就没有甜瓜你的输出:没有柠檬没有甜瓜不是回文预期输出:no lemon no melon 是回文

最佳答案

首先,从字符串中删除空格,这可以通过利用 std::remove_if 在 C++ 中通过单个函数调用来完成。 .

接下来,将删除了空格的字符串与该字符串的反转版本进行比较。通过使用反向迭代器创建字符串的另一个衬里:

所以让我们分解一下:

1) 从字符串中删除空格:

#include <algorithm>
#include <string>
#include <cctype>
//...
std::string s;
//...
s.erase(std::remove_if(s.begin(), s.end(), ::isspace), s.end());

2) 构建字符串的反转版本:

   std::string s;
// ...
std::string sreversed == std::string(s.rbegin(), s.rend());

3) 将所有这些放在一个简洁的函数中:

#include <algorithm>
#include <string>
#include <iostream>
#include <cctype>

bool isPalindrome(std::string s)
{
// erase the spaces
s.erase(std::remove_if(s.begin(), s.end(), ::isspace), s.end());

// compare original string with reversed string and return result
return s == std::string(s.rbegin(), s.rend());
}

int main()
{
std::string test = "never odd or even";
bool result = isPalindrome(test);
std::cout << "\"" << test << "\" is" << (result?" ":" not ") << "a palindrome";
}

输出:

"never odd or even" is a palindrome

关于c++ - 如何使回文代码不用担心 (userInput) 字间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com