創新工場 2014創新工場校園招聘之回文串修復

2021-09-02 08:29:48 字數 1182 閱讀 2189

【題目】

所謂回文,就是正序和倒序遍歷結果一樣的字串,比如'aba', 'abcdedcba'。實現乙個方法pal(),輸入乙個字串,列印出以這個字串為字首的乙個回文。比如輸入'abc',pal()方法列印出'abcdcba'或'abcba';輸入'abcb',可以輸出'abcbcba'或'abcba'。如果可能,輸出盡量短的結果。

【思路一】

以abcdc為例,以此為字首的回文有 'abcdccdcba', 'abcdcdcba','abcdcba',即在輸入的字串後面新增字元,使之成為回文字串

方法一、最先想到的辦法就是把輸入的字串倒序拼接在原字串後面,如原字串為'abcdc',倒序為'cdcba',拼接的結果為'abcdccdcba',然後不斷刪除倒序的字元,拼接上去,判斷是否是回文,是,則輸出,不是,則繼續刪除字元。比如:

1)'abcdcdcba'是回文

2)'abcdccba'不是回文

3)'abcdcba'是回文

最後乙個是回文的字串即未最短的回文字串。

這樣的話,每次可能都求出幾個沒用的回文串,例如上面的'abcdcdcba'是回文,題目要求是求最短的回文串,因此我們從最短可能的回文串開始。

先判斷字串本身是不是回文串,如果不是,一次新增字元,a,ba,cba,dcba,cdcba判斷。

#include #include using namespace std;

//判斷是否是回文串

bool ispalindrome(char* str)

}return true;

}// 回文串修復

char* pal(char* s)

// 本身就是回文串

if(ispalindrome(s))

for(int i = 0;i < len;i++)

str[index] = '\0';

if(ispalindrome(str))

}}int main()

}return true;

}// 回文串修復

char* pal(char* s)

// 修復

for(int i = 0;i < len;i++)

str[index] = '\0';

return str;}}

}int main(){

char* str="xyz";

cout<

創新工場筆試題

1.輸入乙個整型無序陣列,用堆排序的方法是陣列有序 2.求乙個正整數的開方,要求不能使用庫函式sqrt,結果精度在0.01即可 3.給定乙個矩陣int matrixa m n 每行沒列都是增序的,實現乙個演算法尋找矩陣中的某個元素element 下面做出我的題解,能力有限,望見諒!第一題 堆排序 考...

創新工場完美平方數

給乙個正整數 n,找到若干個完全平方數 比如 1,4,9,使得他們的和等於 n。你需要讓平方數的個數最少。給出 n 12,返回3 因為12 4 4 4。給出 n 13,返回2 因為13 4 9。解法1 int maxsqrt int x void printsqrt int n if temp 0 ...

創新工場筆試小記(創新工廠演算法筆試題)

筆試題量很小,答題時間1個小時。1道填空題,9道左右選擇題,最後一道程式設計題。第一題 c intf intx return c int f int x return c 對於int a 65536 1024 8 1 int b f a 執行後b等於多少?第二題 5個骰子,六個面分別標有1 6,現在...