作者Rushia (みけねこ的鼻屎)
看板Marginalman
標題Re: [閒聊] 每日LeetCode
時間Mon Oct 10 14:38:07 2022
1328. Break a Palindrome
給定一個迴文字串palindrome,返回取代palindrome中恰好一字元,使其變為迴文
的「最小」字串。
Example:
abccba可以有多種方法取代一個字串使他是非迴文:
zbccba
a
accba
但是我們要求「最小」的(zb > aa),所以取第二個當解。
Example:
Input: palindrome = "a"
Output: ""
Explanation:不能變非迴文就返回空字符串
思路:
1.若輸入字串長度為1則怎麼替換他都是迴文,返回空字符串。
2.對替代字符串貪婪,我們先掃描字串的前半部份,若任意字元不是a則將他替換為a
必定是最小字串,替換掉後
直接返回。
3.若前面的一半字串都是a,這個字串只可能是奇數長度的下列字串:
aaaaa
xaaaaa
把最後一個字串替換掉成「b」即是最小非迴文字串
aaaaaxaaaa
b
Java Code:
class Solution {
public String breakPalindrome(String palindrome) {
char[] str = palindrome.toCharArray();
int n = str.length;
if(n == 1) return "";
for(int i = 0;i < n/2;i++) {
if(str[i] != 'a') {
str[i] = 'a';
return new String(str);
}
}
str[n - 1] = 'b';
return new String(str);
}
}
https://i.imgur.com/zvHxGhl.png
告辭
--
https://i.imgur.com/fHpKflu.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.111.108 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1665383889.A.464.html
推 pandix: 大師 10/10 14:45
※ 編輯: Rushia (49.159.111.108 臺灣), 10/10/2022 14:47:06
→ Firstshadow: java大師 10/10 14:46