73.對策字串的最大長度。
題目:輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串
「google」,由於該字串裡最長的對稱子字串是「goog」,因此輸出 4。
分析:可能很多人都寫過判斷乙個字串是不是對稱的函式,這個題目可以看成是該函式的
加強版。
/*
73.對策字串的最大長度。
題目:輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串
「google」,由於該字串裡最長的對稱子字串是「goog」,因此輸出 4。
分析:可能很多人都寫過判斷乙個字串是不是對稱的函式,這個題目可以看成是該函式的
加強版。
1.最簡單的就是得到輸入字串的所有子字串,並逐個判斷是不是對稱的。
如果乙個子字串是對稱的,我們就得到它的長度。判斷是否對稱,就是首尾判斷是否相等
2.從中間開始,找對稱字元,首先找出對稱中心(a[i]==a[i+1]),然後從對稱中心開始向兩邊移動比較
從字串的每個字串兩端開始延長,如果當前的子字串是對稱的,
再判斷延長之後的字串是不是對稱的。由於總共有o(n)個字元,每個字元可能延長o(n)次,
每次延長時只需要o(1)就能判斷出是不是對稱的,因此整個函式的時間效率是o(n^2)。
還要注意考慮奇偶情況
*/ #include#includeusing namespace std;
int getsymlen(char *str)
if(right-left-1>max)//right-left+1-2
left=i;//以當前i為中心 偶的情況 左右延展
字串最大長度
已知乙個字串陣列words,要求尋找其中兩個沒有重複字元的字串,使得這兩個字串的長度乘積最大,輸出這個最大的乘積。如 words abcd wxyh defgh 其中不包含重複字元的兩個字串是 abcd 和 wxyh 則輸出16 words a aa aaa aaaa 找不到滿足要求的兩個字串,則輸...
微軟100題(73)對稱字串的最大長度
對稱字串的最大長度 字串 題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。思路 將題目轉化為,求原串和反轉串的最長連續子串的長度 int longcommonsubstr string s1,string s2...
經典演算法題 求對策字串的最大長度
題目 輸入乙個字串,輸出該字串對稱子字串的最大長度,如輸入google,則輸出4.方法一 思路很中規中矩,遍歷這個字串,若有發現相鄰的兩個字元相等,就迴圈判斷與這兩個字元相鄰的兩個字元是否相等,直到不等,記下字元符合條件的字元個數。最大的個數即為所求。方法二 在方法一的基礎上略有改動,思路還是一樣,...