728x90
반응형
https://leetcode.com/problems/break-a-palindrome/
사전적으로 가장 작은 변화를 통해 팰린드롬을 깬다.
-> 팰린드롬을 결정하는 부분 전까지 a가 아닌 문자를 a로 바꾼다.
->단, 모두 a인 경우에는 마지막 자리를 b로 바꾼다.
+) 세련된 풀이
class Solution {
public String breakPalindrome(String s) {
//사전적으로 가장 적은 변화를 통해 회문을 깬다.
//사전적으로 가장 적은 변화는 a보다 큰 문자를 a로 바꾸는 것을 뜻한다.
//한 문자를 이용해 변화를 주지 못할 경우 빈문자열 리턴
//1. ds
String answer="";
if(s.length()<=1 || s==null) return answer;
char[] arr = s.toCharArray();
//2. loop
//팰린드롬을 결정하는 부분까지 루프를 돌리면서 a가 아니면 a로 바꾼다.
for(int i=0;i<arr.length/2;i++){
if(arr[i]!='a') {
arr[i]='a';
return answer= String.valueOf(arr);
}
}
//단, 모든 자리가 a인 경우는 마지막자리만 바꾼다.
arr[arr.length-1]= 'b';
return answer=String.valueOf(arr);
}
}
class Solution {
public String breakPalindrome(String s) {
//사전적으로 가장 적은 변화를 통해 회문을 깬다.
//사전적으로 가장 적은 변화는 a보다 큰 문자를 a로 바꾸는 것을 뜻한다.
//한 문자를 이용해 변화를 주지 못할 경우 빈문자열 리턴
char[] arr = s.toCharArray();
int n = arr.length;
if(s.length()<=1 || s==null) return "";
//회문 결정부
for(int i=0;i<arr.length/2;i++){
if(arr[i]!='a'){
arr[i]='a';
return String.valueOf(arr);
}
}
//모두 a인경우
arr[n-1]='b';
return String.valueOf(arr);
}
}
728x90
반응형
'Java > Java 알고리즘 LeetCode' 카테고리의 다른 글
[LeetCode- Part. 3] 3. 가장 느린 키 (+ 초기값 이용, arr[i]-arr[i-1]) (0) | 2022.11.09 |
---|---|
[LeetCode- Part. 3] 2. 소행성 충돌 (0) | 2022.11.09 |
[LeetCode- Part. 2] 5. 음식을 구하기위한 최단 경로 (+BFS) (0) | 2022.11.09 |
[LeetCode- Part. 2] 4. 가장 긴 회문 부분 문자열 (+ 2차원 DP) # (0) | 2022.11.09 |
[LeetCode- Part. 2] 3. 두 단어 이상 연결된 단어 # (0) | 2022.11.09 |