1. 程式人生 > 其它 >判斷迴文的兩種方式

判斷迴文的兩種方式

技術標籤:寒假演算法練習字串資料結構演算法

一、什麼是迴文

形如 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 >即可.