作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试字符串的开头和结尾。如果单词有大写字母,我们将其更改为小写。如果单词有空格或'"'
,我们将删除该字符。它应该检查的第一个递归调用会看到字符串的末尾有一个大写字母,并且应该将其更改为小写。但是,当我输出word[word.size()]
时,它会输出一个空格,但是当我输出word[word.size() - 1]
时,它将输出我要查找的字母。我不确定空格是什么以及应该如何处理它,因为我不想在字符串中使用它,因为这会导致比较问题。
bool checkPalindrome(string word){
if (isupper(word[0]))
{
word[0] = tolower(word[0]);
}
if (isupper(word[word.size()]))
{
word[word.size()] = tolower(word[word.size()]);
}
//check if there is a space or "" if there is then delete that position from the string
if (word[0] == ' ' || word[0] == '"')
{
word.erase(1);
}
if (word[word.size()] == ' ' || word[word.size()] == '"')
{
word.pop_back();
}
if (word.size() > 1)
{
if (word[0] == word[word.size()])
{
word = word.substr(1, word.size() - 2);
return checkPalindrome(word, count);
}
else
{
return false;
}
}
else
{
return false;
}
int main()
{
ifstream inFile;
bool check = false;
string temp = "";
int count = 0;
vector<string> vect;
//Reading from a file line by line
inFile.open("words.txt");
if (inFile.is_open())
{
while (getline(inFile, temp))
{
vect.push_back(temp);
}
}
inFile.close();
for (auto i = 0; i < vect.size(); i++)
{
count = vect[i].size();
check = checkPalindrome(vect[1], count);
if (check == true)
{
cout << vect[i] << ", is a palindrome!\n";
}
else
{
cout << vect[i] << ", is not a palindrome.\n";
}
}
} return 0;
最佳答案
如果字符串的大小为4,则只有4个元素:0、1、2和3。没有第五个元素,因此您不能访问第四个元素。
如果字符串的长度为五:
零是第一个元素。
一个是第二个要素。
第二是第三个要素。
三是第四要素。
当然,第五个元素是Leeloo,它不是字符串中的字符。如果字符串的长度为四,则不应尝试访问第五个元素(至少在未经她允许的情况下)。
Ecto gamat。
关于c++ - 检查字符串的两端均不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63570707/
我是一名优秀的程序员,十分优秀!