Algorithm/기타(기업등)

[CodingBat/java] mirrorEnds

IagreeBUT 2021. 10. 14. 21:45
728x90

구분

  • String - 3 

 

문제

시작과 끝이 반전으로 동일한 부분을 반환 

 

*주의*

sameEnds와 약간 비슷하지만 ( without Overlapping) 이고, 이 문제는 possibly Overlapping

sameEnds("aba") → a

mirrorEnds("aba") → aba

 

https://codingbat.com/prob/p139411

 

CodingBat Java String-3 mirrorEnds

Given a string, look for a mirror image (backwards) string at both the beginning and end of the given string. In other words, zero or more characters at the very begining of the given string, and at the very end of the string in reverse order (possibly ove

codingbat.com

 

풀이

sameEnds와 동일하지만, overlapping이 가능하므로, string끝까지 탐색한다.

또한, 역전시킨 string과 비교한다.

 

 

 

코드

    public String mirrorEnds(String string) {

        int len = string.length();
        String ans = "";
        String tmp = "";

        for(int i=0; i<len; i++){
            tmp += string.charAt(i);//처음부터 한자씩 저장
            int tmplen = tmp.length();//길이를 저장

	   //역전
            StringBuffer sb = new StringBuffer(tmp);
            String reversedStr = sb.reverse().toString();

            if( i<len && reversedStr.equals(string.substring(len-tmplen,len))) //역순서이므로 전범위를 검사해야함
                ans = tmp;//끝부터 길이 만큼의 substring의 역순과 같은지 검사
        }
        return ans;
    }

 

 

추가사항

string을 반전시키는 방법 

 

StringBuffer의 메소드 reverse사용
String str = "abcde";

StringBuffer sb = new StringBuffer(str);
String reversedString = sb.reverse().toString(); //반전 시킨 후 String으로 변경

 

 

 

char배열로 변환하여, 역순으로 배열
String str = "abcde"; 

//String을 char배열로 변환 
char[] arr = str.toCharArray(); 

//역순을 저장할 배열 선언 
char[] reversedArr = new char[arr.length]; 

//for문을 이용해 반대로 저장 
for(int i=0; i<arr.length; i++){ 
	reversedArr[arr.length-1-i] = arr[i]; 
} 

//String으로선언
String reversedStr = new String(reversedArr);

 

toCharArray 

String의 메소드 : string을 charArray로 변환한 것을 반환해줌 

 

String의 생성자

 

728x90