214 最短回文串

2021-10-24 01:55:27 字數 1447 閱讀 3884

給定乙個字串 s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。

示例 1:

輸入: 「aacecaaa」 輸出: 「aaacecaaa」 示例 2:

輸入: 「abcd」 輸出: 「dcbabcd」

這個題目可以轉化成找出該字串的最長回文字首。

class

solution

}for

(int i=s.

length()

-1;i>temp;i--

) str=str.

(s);

return str.

tostring()

;}//判斷是否是回文串

public

boolean

ishuiwen

(string s)

if(low<=high)

else

}}

通過暴力列舉時間複雜度是o(n

2n^2

n2),直接tle了。

通過比較正序和反序字串的hash值是否相等來判斷兩個字串是否相等。

因為要用到雜湊值,所以最好設計乙個能盡可能少地產出雜湊衝突的演算法,這樣就可以直接通過比較hash值來判斷,而不需要再進行驗證了。

下面的這個演算法,我比較了一下驗證和沒驗證的時間,不驗證的話用了3ms,而驗證用了490ms。

class

solution

mul=

(mul*base)

%mod;

} stringbuilder str=

newstringbuilder(""

);if(best+

1str.

(s);

return str.

tostring()

;}//判斷是否是回文串

public

boolean

ishuiwen

(string s)

if(low<=high)

else

}}

該演算法的時間複雜度是o(n),空間複雜度o(n)

只需要將s作為模式串,他的逆序串作為查詢串,之後就可以獲得最長的回文字首字串。

class

solution

//返回最長回文字首的最後乙個字元的下標+1

public

intkmp

(string t,string p)

else

else}}

i=0;j=0;

while

(ielse

else}}

return j;

}}

時間複雜度為o(n),空間複雜度為o(n)。

214 最短回文串

難度 困難 題目描述 思路總結 python字串反轉幾種方法 還是那句話,現階段注重的是數量,質量等後期提高。這題利用簡單的直覺做題,這種思路還需要再積累。沒見過這種題是很難想出來的。題解一 class solution def shortestpalindrome self,s str str 思...

C LeetCode 214 最短回文串

給定乙個字串 s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。示例 1 輸入 aacecaaa 輸出 aaacecaaa 示例 2 輸入 abcd 輸出 dcbabcd 這題考慮把字串s分成s1和s2兩部分,即s s1 s2,其中s1為回文串,s2不是回文...

LeetCode214 最短回文串

給定乙個字串s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。示例 1 輸入 aacecaaa 輸出 aaacecaaa 示例 2 輸入 abcd 輸出 dcbabcd 1 s s1 s2,其中s1是回文串,s2是s s1。2 ans 反轉後的s2 s cl...