1. 程式人生 > >程式設計判斷字串是否為迴文

程式設計判斷字串是否為迴文

      判斷一個字串是否為迴文,比如說單詞“level”就是迴文。我們可以從一個字串的兩端進行遍歷比較,例如對於level我們可以進行下面的步驟。

(1)計算需要比較的次數。由於“level”字串長度為5,是奇數,因此比較兩次

(2)第一次比較:看“level”的第一個字元與最後一個字元是否相等,若相等,則進行第二次比較。

(3)第二次比較:看“level”的第二個字元與倒數第二個字元是否相等,若相等則是迴文

如果在上面的比較過程中有一個不相等,則字串不是迴文。根據上面的思路,我們可以寫出如下的程式程式碼:

#include <iostream>
using namespace std ;

int IsRevStr(char *str )
{
     int i,len ;
	 int found = 1 ;    //1表示是迴文 0則不是

	 if(str == NULL)
	 {
		 return -1 ;
	 }
	 len = strlen(str) ;
	 for(i = 0 ;i<len/2;i++)  //遍歷中如果發現相應的頭尾字串不等,則字串不是迴文
	 {
		 if(*(str+1) != *(str+len-i-1))
		 {
			 found = 0 ;
			 break ;
		 }
	 }
	 return found ;
}

int main()
{
	char str1[10] = "1234321" ;
	char str2[10] = "1234221" ;

	int test1 = IsRevStr(str1) ;
	int test2 = IsRevStr(str2) ;

	cout<<"str1 is "<<(test1 == 1 ? "" : "not")<<"reverse string."<<endl ;

	cout<<"str2 is "<<(test2 == 1 ? "" : "not")<<"reverse string."<<endl ;


	return 0 ;
} 
      這個程式中的IsRevStr()函式用於判斷字串是否為迴文字串,如果是則返回1,否則返回0.輸出結果:

  1 str1 is reverse string.

  2 str2 is not reverse string.