leetcode關於回文類題目的總結

2021-08-17 20:46:26 字數 2882 閱讀 3709

1. 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 長度最長為1000。

示例:

輸入: "babad"

輸出: "bab"

注意: "aba"也是有效答案

示例:

輸入: "cbbd"

輸出: "bb"

string processstr(string s)

string longestpalindrome(string s)

else

vec_p[i] = 1;

while(i - vec_p[i] >= 0 && i + vec_p[i] < str.size() &&str[i - vec_p[i]] == str[i + vec_p[i]])

vec_p[i]++;

if(vec_p[i] + i - 1 > max_right)

if(max_length < vec_p[i])

}string str_ret = str.substr(begin,2*max_length - 1);

str_ret.erase(std::remove(str_ret.begin(), str_ret.end(), '#'), str_ret.end());

return str_ret;

}

//中心點擴散法
string findlongestpalindrome(string &s)

j--;

k++;}}

for(int i=0;i=0&&kmaxlength)

j--;

k++;}}

if(maxlength>0)

return s.substr(start,maxlength);

return null;

}

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

例如:給出"aacecaaa",返回"aaacecaaa"

給出"abcd",返回"dcbabcd"

class solution 

else

vec_p[i] = 1;

while(i - vec_p[i] >= 0 && i + vec_p[i] < str.size() &&str[i - vec_p[i]] == str[i + vec_p[i]])

vec_p[i]++;

if(vec_p[i] + i - 1 > max_right)

if(i + 1 == vec_p[i])

}string str_add = str.substr(vec_p[cent]*2 - 1,str.size() - vec_p[cent]*2 + 1);//需要補全的

int add_len = str_add.size();

string new_str(add_len,' ');

for(int i = 0; i < add_len; i++)//反轉

new_str[i] = str_add[add_len-1-i];

new_str += str;

new_str.erase(std::remove(new_str.begin(), new_str.end(), '#'), new_str.end());

return new_str;

}string processstr(string s)

};

3.

給定一組

獨特的單詞, 找出在給定列表中

不同 的索引對(i, j),使得關聯的兩個單詞,例如:words[i] + words[j]形成回文。

示例 1:

給定words=["bat", "tab", "cat"]

返回[[0, 1], [1, 0]]

回文是["battab", "tabbat"]

示例 2:

給定words

["abcd", "dcba", "lls", "s", "sssll"]

返回[[0, 1], [1, 0], [3, 2], [2, 4]]

回文是["dcbaabcd", "abcddcba", "slls", "llssssll"]

該題解題思路暫時只想到兩種,一種就是暴力搜尋,**就不貼出來了。

第二種借助hash map,思路是將每個字串進行迴圈分割,如果一部分為回文串,另一部分不是,則只需要搜尋能否找到非回文串的反轉穿,找到即可配對一組,**如下:

class solution   

return true;

} vector> palindromepairs(vector& words) );

if(map_str.count(right) && isvalid(left)&&(map_str[right] != j)) //從後面連線

res.push_back(vector);

} }

return res;

} };

關於人文類文章

首先,隨著本人年齡的不斷增加,新的問題不斷出現,每每思考之際總覺知識匱乏。關於程式設計,他只是本人眾多愛好的一種,我從未把程式設計當作賺錢的工具,它僅僅是我的乙個愛好,粗本人認為程式設計的思維更加傾向於邏輯性思維,對於學習哲學來說這門鍛鍊思維的工具是必不可少的,但是知識我認為應該是多元的,不能僅僅只...

leetcode題目9 回文數

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 輸入 121 輸出 true解法一 數字轉字串 class solution def ispalindrome self,x type x int rtype bool if x 0 return fals...

回文數題目

1 回文字串 string problem 194 time limit 1000ms memory limit 65536k description 對於給定的乙個字串,判斷它是否是回文字串,例如 songnos是回文字串,songgnos也是回文字串。input 輸入資料有多行,第一行是乙個整數...