[遞歸] 迴文字符串 關鍵在把大問題變成小問題

迴文字符串
題目描述
若一個字符串的正序與倒序相同,則稱其爲迴文字符串;現在給定一個字符串,使用遞歸的方法,判斷他是否是迴文字符串。

輸入描述
字符串,長度不超過100000;

輸出描述
若是,則輸出"Yes."

若不是,則輸出"No."

樣例輸入
abcadacba

樣例輸出
Yes.

原來在斯坦福大學公開課:編程範式看到的經典例題,視頻下架了,思路一樣。

/*描述
遞歸解迴文字  把待處理的問題變小 
*/
#include<iostream>
#include<string>
using namespace std;
string s;
bool f(int L,int R){
	if(L==R+1||L==R) return 1;
	if(s[L]==s[R]) {
		L++;R--;
		//cout<<L<<"  "<<R<<endl;
		f(L,R);
	}else return 0;
}

int main() {
	cin>>s;
	f(0,s.size()-1)? cout<<"YES":cout<<"NO";
	return 0;
}

 

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