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 輸入資料有多行,第一行是乙個整數...