본문 바로가기

Java/Java 알고리즘 LeetCode

[LeetCode- Part. 3] 1. 회문 깨기 # (+toCharArray, valueOf)

반응형

https://leetcode.com/problems/break-a-palindrome/

 

Break a Palindrome - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

사전적으로 가장 작은 변화를 통해 팰린드롬을 깬다.

-> 팰린드롬을 결정하는 부분 전까지 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);
    }
}
반응형