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