华科机考:回文字符串

时间限制:1秒空间限制:32768K

题目描述

给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。

输入描述: 输入包括一行字符串,其长度不超过1000。

输出描述: 可能有多组测试数据,对于每组数据,如果是回文字符串则输出"Yes!”,否则输出"No!"。

输入例子: hellolleh

             helloworld

输出例子: Yes!

              No!

思路:1.可以将字符串逆序输出到另一个字符串,然后判断这两个字符串是否相等,不过这样需要浪费多余的空间

        2.将字符串分成前后两半(中间如果有多余的字符不用管),然后判断对应的字符是否相等

代码(第二种思路):

#include <iostream>
#include <string.h>
using namespace std;

int main(){
  char a[1010];
  int flag;
  while(cin>>a){
    flag=0;
   for(int i=0;i<strlen(a)/2;i++)
     if(a[i]!=a[strlen(a)-1-i]){
       flag=1;
       break;
     }
  if(flag==0)
    cout<<"Yes!"<<endl;
  else
    cout<<"No!"<<endl;
  }
  return 0;
}
原文地址:https://www.cnblogs.com/mlgjb/p/6720168.html