杭电OJ2029解题心得

来源:互联网 发布:淘宝延长收货可以多久 编辑:程序博客网 时间:2024/06/17 03:14

(原MyBlog)

题目描述

Problem Description

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。

Input

输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

Output

如果一个字符串是回文串,则输出”yes”,否则输出”no”.

Sample Input

  • 4

  • level

  • abcde

  • noon

  • haha

Sample Output

  • yes

  • no

  • yes

  • no

原题链接Problem-2029

解题思路

本题就是简单的判断一个字符串从前往后读和从后往前读都是相同的字符顺序

  • 法一、实现字符串从前往后读的序列和从后往前读的序列一一比较,就可得出答案

  • 法二、将字符串进行折半,然后再比较,类似于方法一

  • 法三、另外构造一个字符串,使其为当前字符串的倒序,然后比较两字符串是否相等

此题代码

此代码采用容器存储,使用reverse函数获得原字符串的倒序字符串

#include <iostream>#include <string>#include <algorithm>using namespace std;int main (){    int n;    cin>>n;    for(int i=0;i<n;i++){        string s;        cin>>s;        string s1=s;        reverse(s1.begin(),s1.end());        if(s1==s) cout<<"yes"<<endl;        else cout<<"no"<<endl;    }    return 0;}

小结

看得出来,如果使用了容器string,那么问题会简单很多,对于ACM或者其他的程序设计比赛,C++STL类库的使用会简化程序,使竞赛更加有趣(个人观点),所以对于C++选手来说,STL是必不可少的一把利剑

类似题目(回文数)

蓝桥杯基础 回文数

问题描述

1221是一个非常特殊的数,他从左边读和从右边读都是一样的,编程求出所有这样的四位十进制数。

输出格式

按从小到大的顺序输出满足条件的四位十进制

  • 由于这两天蓝桥网在维护,进不了题目链接,等后期再填上空缺了,见谅见谅!

解题思路

这道题目就相对来说简单得多,直接根据题意,然后分离四位数的各位然后进行比较,就能得出答案

如果更改下题意,输入一个数,判断此数是否为回文数(回文数定义类似于回文字符串),那么就和前边的题目几乎相同了

回文数代码

#include <iostream>using namespace std;int main (){    int i;    for(i=1000;i<10000;i++)    {        if(((int)i/1000==(i%10))&&(int((i%1000)/100)==(int(i%100)/10)))            cout<<i<<" ";    }    return 0;}

交友栏目

更多IT相关咨询请关注微信公众号 DeepBlueTeam ,或关注QQ群 577047300(I&T)欢迎各位小伙伴的加入。

原创粉丝点击