gpt4 book ai didi

c++ - 回文和镜像字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:51:39 25 4
gpt4 key购买 nike

我正在编写一个代码来读取字符串行并检查它是镜像的、回文的还是镜像的回文问题是除了最后一个之外,它总是显示错误的输入值

示例输入:

NOTAPALINDROME 
ISAPALINILAPASI
2A3MEAS
ATOYOTA

代码:

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

bool is_palindrome(const string &s)
{
for(int i=0,j=s.length()-1;i!=j;i++,j--)
{
if(s[i]!=s[j])
return false;
}
return true;
}
char get_mirror(const char &c)
{
switch(c)
{

case 'A':return c;
case 'E':return '3';
case 'H':return c;
case 'I':return c;
case 'J':return 'L';
case'L':return 'J';
case'M':return c;
case 'O':return c;
case 'S':return '2';
case 'T':return c;
case'U':return c;
case'W':return c;
case'X':return c;
case'Y':return c;
case'Z':return '5';
case'1':return c;
case'2':return 'S';
case'3':return 'E';
case'5':return 'Z';
case'8':return c;
default: return'-1';

}
}
bool is_mirrored(const string &s)
{
for(int i=0,j=s.length()-1;i!=j;i++,j--)
{
if(get_mirror(s[i])!=s[j])
{
return false;

}
}
return true;

}

int main()
{
vector<string>cases;
vector<string>::iterator pt;
string temp;
while(getline(cin,temp))
{
cases.push_back(temp);

}
for(pt=cases.begin();pt!=cases.end();pt++)
{
cout<<*pt<<" "<<is_palindrome(*pt)<<" "<<is_mirrored(*pt)<<endl;
}

system("pause");
return 0;
}

如果有多个字符串则输出:

NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
^Z
NOTAPALINDROME 0 0
ISAPALINILAPASI 0 0
2A3MEAS 0 0
ATOYOTA 1 1
Press any key to continue . . .

输出一个字符串:

2A3MEAS
^Z
2A3MEAS 0 1
Press any key to continue . . .

最佳答案

您的输入似乎有额外的空格破坏了您的字符串检查。证据是许多字符串的输出显示 5 个空格而不是它应该显示的 4 个,最后一行除外。手动清理您的输入,或在您的程序中修剪您的输入字符串。 (参见,例如 What's the best way to trim std::string?。)

关于c++ - 回文和镜像字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364986/

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