判斷迴文的兩種方式
阿新 • • 發佈:2021-01-21
一、什麼是迴文
形如 ABCBA 的字串或12321的數字被稱為迴文。
二、怎麼判斷迴文
1、數字型迴文
利用/ %運算把不同數位上的數分隔開,再把數倒置並於原數進行比較,若相等則是迴文,不相等則不是。(判斷迴文的數字一般會很大,所以用long型)
bool symm(long m){
long temp = m,n=0;
while (temp){
n = n*10+temp%10;
temp = temp/10;
}
return (m == n);
}
2、字串型迴文
字串型迴文的判斷方式較多,這裡列舉常用的兩種。
第一種是把字串看作字元陣列,利用陣列下標從字元陣列的兩頭開始比較,若兩兩字元均相同則為迴文。
bool symm(string s){
int i,j;
for(i = 0,j = s.length()-1;i<=j;i++,j--){
if(s[i] != s[j]) return false;
}
return true;
}
另一種需要用到棧,利用棧先進後出的特性,可以把一個字串先倒置,然後再進行比較,本質上與前一種方法類似,但前一種效率更高,從兩頭開始比較,節省一半時間。
bool symm(string str) {
for(int i=0;i<n;i++)
str1.push(a[i]);
for (int i=0;i<n;i++){
if(str[i]!=str1.top())
return false;
str1.pop();
}
return true;
}
上方程式碼,需要定義全域性變數stack < int > str1,用來判斷數字型,若題目中給定的資料是字元型把< int > 改成< char >即可.