题目:http://acm.hdu.edu.cn/showproblem.php?pid=3793
代码:
#include<stdio.h> #include<string.h> int IsSymmetric(char s[],int len){//判断字符串是否对称; int flag,i; flag=1; for(i=0;i<len/2;i++){ if(s[i]!=s[len-1-i]){ flag=0; break; } } return flag; } void shiftLeft(char s[],int len){//把字符串循环左移一次; int i; char temp; temp=s[0]; for(i=0;i<len-1;i++){ s[i]=s[i+1]; } s[len-1]=temp; } int main(){ char s[101],temp; int len,i,flag,count; while(gets(s)!=NULL){ if(strcmp(s,"#")==0){ break; } flag=0;//标记字符串是否对称; len=strlen(s); count=0;//总共移位的次数; while(count<len){ if(IsSymmetric(s,len)==1){ flag=1; break; } shiftLeft(s,len); count++; } //printf("count=%d/n",count); //printf("len=%d/n",len); if(flag==1){ printf("YES %d/n",(len/2+count)%len); } else{ printf("NO/n"); } } }