字符串之迴文串

Problem F: Palindromes _easy version

Description

迴文串是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是迴文串。請寫一個程序判斷讀入的字符串是否是迴文

Input

輸入包含多個測試實例,輸入數據的第一行是一個正整數n,表示測試實例的個數,後面緊跟着是n個字符串,每個字符串的長度不超過500

Output

如果一個字符串是迴文串,則輸出"yes",否則輸出"no".

Sample Input

4

level
abcde
noon
haha

Sample Output

yes
no
yes
no


#include <iostream>

#include <stdio.h>

#include <cstring>

using namespace std;

int main()

{

   int n,m,j,i;

       boolp;

   char str[500];

   scanf("%d\n",&m);     //用C語言輸入所需字符串行數

   for(j=1;j<=m;j++)       //循環輸入字符串

    {

              {gets(str);

           n=strlen(str);           //求出字符串長度

           for(i=0;i<n/2;i++)        //循環判斷對稱位置的字符是否相同

           {if(str[i]!=str[n-i-1])

                     p=0;

                     elsep=1;}

                     if(p==1)  cout<<"yes"<<endl;          //按要求輸出

                     else    cout<<"no"<<endl;

              }

    }

   return 0;

}

         題目要求判斷是否爲迴文,即判斷字符串是否對稱,我們只要把字符串裏的每個字符取出來,然後判斷對稱位置的字符是否相同就可以了,只要有一個不相同,就不是迴文,其判斷方法和素數的判斷方法類似,即定義布爾變量(bool p;)

         我們先輸入一個數(scanf("%d\n",&m);),以便控制輸入測試數據的個數(for(j=1;j<=m;j++)),然後在循環語句中輸入規定個數的字符串 (gets(str););         

         求出輸入的字符串的長度(n=strlen(str);),只要判斷前半部分和後半部分相對稱的位置就可以,所以,只循環到中間位置就可以了(for(i=0;i<n/2;i++));迴文是對稱位置都相同,所以,只要有不同的地方(if(str[i]!=str[n-i-1])),就不是迴文,令布爾變量爲假(p=0;),否則(else),纔是迴文,令布爾變量爲真(p=1;);

         當判斷爲真時(if(p==1)),輸出yes(cout<<"yes"<<endl;),否則(else),輸出no(cout<<"no"<<endl;).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章