UVA401 回文词 Palindromes

小咪咪 2023-06-13 13:29 196阅读 0赞

知识储备:
映射串:构建映射表
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODc3MTg0_size_16_color_FFFFFF_t_70

上述的映射表

  1. string strMap="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
  2. char mmap(char ch){
  3. if(ch>='A'&&ch<='Z'){
  4. return strMap[ch-'A'];//字母映射
  5. }else{
  6. return strMap[ch-'0'+25];//字符映射
  7. }
  8. }
  9. #include <bits/stdc++.h>
  10. using namespace std;
  11. string strMap="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
  12. char mmap(char ch){
  13. if(ch>='A'&&ch<='Z'){
  14. return strMap[ch-'A'];//字母映射
  15. }else{
  16. return strMap[ch-'0'+25];//字符映射
  17. }
  18. }
  19. int main(){
  20. string s;
  21. while(cin>>s){
  22. int len=s.length();
  23. bool flag1=true;//回文串
  24. bool flag2=true;//为镜像串
  25. for(int i=0;i<(len+1)/2;i++){
  26. if(s[i]!=s[len-1-i]){
  27. flag1=false;
  28. }
  29. if(mmap(s[i])!=s[len-1-i]){
  30. flag2=false;
  31. }
  32. }
  33. if(flag1==true&&flag2==true){
  34. cout<<s<<" -- is a mirrored palindrome."<<endl<<endl;
  35. }
  36. if(flag1==true&&flag2==false){
  37. cout<<s<<" -- is a regular palindrome."<<endl<<endl;
  38. }
  39. if(flag1==false&&flag2==false){
  40. cout<<s<<" -- is not a palindrome."<<endl<<endl;
  41. }
  42. if(flag1==false&&flag2==true){
  43. cout<<s<<" -- is a mirrored string."<<endl<<endl;
  44. }
  45. }
  46. return 0;
  47. }

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++

    输入一个字符串,判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓回文串,就是反转以后和原串相同,如abba和madam。 所有镜像串,就是左右镜像之后和原串相同