Palindromes //简单字符串

你的名字 2022-08-06 00:17 202阅读 0赞
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. int i, mid, len;
  6. char stdc[50]= {'A',0,0,0,'3',0,0,'H','I','L',0,'J','M',0,'O',0,0,0,'2','T','U','V','W','X','Y','5','1','S','E',0,'Z',0,0,'8',0};<span style="white-space:pre"> </span>
  7. char ch[30];
  8. bool isr, ism;
  9. while( scanf("%s", ch)!=-1 )
  10. {
  11. isr = ism = true;
  12. len = strlen(ch);
  13. mid = len / 2 + (len%2==0? 0:1);
  14. for(i=0; i<mid; i++)
  15. {
  16. if(ch[i] != ch[len-i-1])
  17. {
  18. isr = false;
  19. if(ch[i]>='A' && ch[i]<='Z')
  20. {
  21. if(ch[len-i-1] != stdc[ch[i]-'A'] )
  22. ism = false;
  23. }
  24. else if(ch[i]>='0' && ch[i]<='9')
  25. {
  26. if(ch[len-i-1] != stdc[ch[i]-'0'+25] )
  27. ism = false;
  28. }
  29. }
  30. else
  31. {
  32. if(ch[i]>='A' && ch[i]<='Z')
  33. {
  34. if(ch[len-i-1] != stdc[ch[i]-'A'] )
  35. ism = false;
  36. }
  37. else if(ch[i]>='0' && ch[i]<='9')
  38. {
  39. if(ch[len-i-1] != stdc[ch[i]-'0'+25] )
  40. ism = false;
  41. }
  42. }
  43. if(!isr && !ism) break;
  44. }
  45. printf("%s", ch);
  46. if(isr && ism)
  47. printf(" -- is a mirrored palindrome.\n");
  48. else if(isr)
  49. printf(" -- is a regular palindrome.\n");
  50. else if(ism)
  51. printf(" -- is a mirrored string.\n");
  52. else
  53. printf(" -- is not a palindrome.\n");
  54. printf("\n");
  55. }
  56. return 0;
  57. }

发表评论

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

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

相关阅读