題目描述ios
「迴文串」是一個正讀和反讀都同樣的字符串,好比「level」或者「noon」等等就是迴文串。花花很是喜歡這種擁有對稱美的迴文串,生日的時候她獲得兩個禮物分別是字符串A和字符串B。如今她很是好奇有沒有辦法將字符串B插入字符串A使產生的字符串是一個迴文串。你接受花花的請求,幫助她尋找有多少種插入辦法可使新串是一個迴文串。若是字符串B插入的位置不一樣就考慮爲不同的辦法。
例如:ide
- A = 「aba」,B = 「b」。這裏有4種把B插入A的辦法:
- 在A的第一個字母以前: "baba" 不是迴文
- 在第一個字母‘a’以後: "abba" 是迴文
- 在字母‘b’以後: "abba" 是迴文
- 在第二個字母'a'以後 "abab" 不是迴文
- 因此知足條件的答案爲2
輸入描述:測試
每組輸入數據共兩行。
第一行爲字符串A
第二行爲字符串B
字符串長度均小於100且只包含小寫字母spa
輸出描述:code
輸出一個數字,表示把字符串B插入字符串A以後構成一個迴文串的方法數
示例1
輸入ciaba
b字符串輸出string
2it
題目分析:io
代碼以下:
#include <iostream> #include <string> using namespace std; bool isCircle(string str) { size_t start = 0; size_t end = str.size()-1; while(start <= end) { if(str[start] != str[end]) return false; start++; end--; } return true; } int main() { string str1, str2; int count = 0; while(cin >> str1 >> str2) { int sz = str1.size(); for(size_t i = 0; i <= sz; ++i) { string tmp = str1; tmp.insert(i, str2); if(isCircle(tmp)) count++; } cout << count << endl; } return 0; }