程式設計判斷字串是否為迴文
阿新 • • 發佈:2019-01-08
判斷一個字串是否為迴文,比如說單詞“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.