最長回文串

2021-10-04 03:26:29 字數 928 閱讀 8530

給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。

在構造過程中,請注意區分大小寫。比如 "aa" 不能當做乙個回文字串。

注意:假設字串的長度不會超過 1010。

示例 1:

輸入:"abccccdd"

輸出:7

解釋:我們可以構造的最長的回文串是"dccaccd", 它的長度是 7。

分析:此題看似簡單,但對思維要求還是挺高的,必須要想到那個層面才可以做出來,我一開始看題目的時候,就使用了map來儲存,主要是因為最近打題頻繁見到資料結構,就這樣做了,當然也可以使用簡單的陣列,構造最長回文串,我一開始認為只要把所有出現偶數次數的字元次數相加再額外加上最長的乙個奇數字元的次數就可以了,結果發現奇數 = 偶數 + 奇數,裡面還有偶數部分呢…;

3 = 2+1;1 = 1+0;裡面的偶數又怎麼處理好呢??奇數n 的偶數部分= n/2 *2 ;

3 = 3/2 *2 = 2;5 = 5/2 *2 = 4;所以遍歷所有字元,當其次數為偶數時,直接相加,當其次數為奇數時,加上 n/2 2;結果突然又發現,偶數n = n2 /2;所以最後就只用遍歷所有字元 ans+=n/2 *2;就可以了; 最後只需判斷 ans ==s.length();如果相等,那當然最好,直接返回s.length();否則說明其中有奇數次數的字元,則需要從這些奇數個字元中任挑乙個即 +1 返回ans+1;

private

static

intlongestpalindrome

(string s)

int ans=0;

for(map.entry entry:map.

entryset()

)return s.

length()

==ans?ans:ans+1;

}

最長回文串

輸入乙個字串,求出其中的最長回文字串,樣例輸入 confucicss say madam,i m asam。樣例輸出 masam,i m asam。這個題首先要判斷最長那個回文串的位置,並且與大小寫無關,用到函式 toupper 然後輸出後面的字串。include include include i...

最長回文串

時間限制 1000ms 單點時限 1000ms 記憶體限制 64mb 描述 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一連串的字串,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能分別...

最長回文串

給出乙個包含大小寫字母的字串。求出由這些字母構成的最長的回文串的長度是多少。資料是大小寫敏感的,也就是說,aa 並不會被認為是乙個回文串。注意事項 假設字串的長度不會超過1010。您在真實的面試中是否遇到過這個題?yes 樣例給出 s abccccdd 返回7 一種可以構建出來的最長回文串方案是 d...