Leetcode:1616. 分割兩個字串得到迴文串
1616. 分割兩個字串得到迴文串
題意:兩個等長的字串a、b,在同一個位置切割得到 a p r e f i x , a s u f f i x , b p r e f i x , b s u f f i x a_{prefix}, a_{suffix}, b_{prefix}, b_{suffix} aprefix,asuffix,bprefix,bsuffix , 組 合 得 到 ,組合得到 ,組合得到 a p r e f i x + b s u f f i x 和 b p r e f i x + a s u f f i x a_{prefix} + b_{suffix}和b_{prefix} + a_{suffix} aprefix+bsuffix和bprefix+asuffix兩個字串,這兩個字串中是否存在迴文串。
吐槽:競賽時沒有抓住題目的本質,在這裡吊了一小時(還是太菜了)
思路:迴文串的題目一定要抓本質,即迴文。有4種情況要討論:
- a的前半部分與b的後半部分匹配,某一處開始不能匹配
- a的前半部分+a的剩餘部分+b的後半部分能否構成迴文串
- a的前半部分+b的剩餘部分+b的後半部分能否構成迴文串
- b的前半部分與a的後半部分匹配,某一處開始不能匹配
- b的前半部分+a的剩餘部分+a的後半部分能否構成迴文串
- b的前半部分+b的剩餘部分+a的後半部分能否構成迴文串
程式碼
class Solution {
public boolean checkPalindromeFormation(String a, String b) {
return check(a, b) || check(b, a);
}
private boolean check(String a, String b){
for(int i = 0, j = a.length() - 1; i < j; i++, j--){
if(a.charAt(i) != b.charAt(j)){
return extend(a, i, j) || extend(b, i, j);
}
}
return true;
}
private boolean extend(String a, int l, int r){
for(int i = l, j = r; i < j; i++, j--){
if(a.charAt(i) != a.charAt(j))
return false;
}
return true;
}
}
相關文章
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- LeetCode - 409 - 最長迴文串LeetCode
- LeetCode125. 驗證迴文串LeetCode
- LeetCode 5.最長迴文子串LeetCode
- leetcod 131.分割回文串(回溯、迴文字串)字串
- LeetCode-5. 最長迴文子串(Manacher)LeetCode
- 演算法-兩最長迴文子串演算法
- leetcode------分割回文串LeetCode
- 判斷迴文串 字串/數字相互轉換字串
- 演算法之字串——最長迴文子串演算法字串
- LeetCode題集-5 - 最長迴文子串(一)LeetCode
- 淺談最長迴文子串求法——字串雜湊字串
- LeetCode-131-分割回文串LeetCode
- Leetcode5: Longest Palindromic Substring(最長迴文子串)LeetCode
- 每日一道 LeetCode (48):最長迴文子串LeetCode
- Leetcode 344:驗證迴文串(最詳細解決方案!!!)LeetCode
- 得到字串 位元組 長度 中文 兩個字元 英文一個字元字串字元
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- 第五章 字串專題 ---------------- 5.10 題解:神奇的迴文串字串
- 從0打卡leetcode之day 6--最長迴文串LeetCode
- LeetCode題集-5 - 最長迴文子串之馬拉車(二)LeetCode
- LeetCode-824. Goat Latin(字串分割)LeetCodeGo字串
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- leedcode-最長迴文串
- 省錢構建迴文串
- 1203- 最長迴文串
- java 最長迴文子串Java
- Python連線兩個字串並去除首尾重複子串Python字串
- 回溯演算法 LeetCode 131 分割回文子串演算法LeetCode
- 5. 最長迴文子串
- LeetCode迴文數(Python)LeetCodePython
- 最長迴文子串 -- 三種解答
- 每日一練(40):驗證迴文串
- LeetCode9[迴文數]LeetCode
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- C語言:判斷一個字串是否為迴文C語言字串
- 求迴文子序列個數(雖然字串,但是DP)字串
- 每日一算--最長迴文子串