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
풀이
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