Algorithm/기타(기업등)
[CodingBat/java] sameEnds
IagreeBUT
2021. 10. 14. 17:59
728x90
구분
- String-3
문제
시작과 끝에 둘다 등장하는 가장 긴 string
https://codingbat.com/prob/p131516
풀이
포인터를 두개 두고,
left : 맨 처음 인덱스부터
right : 중간 인덱스 부터
서로 일치하는 구간을 찾아나감
*주의 : string의 길이가 홀수/짝수에 따라 중간인덱스(right)가 달라짐.
코드
public String sameEnds(String string) {
String ans="";
int size = string.length();
int left = 0, right = size/2;
if(size%2==1){
right++;
}
//투포인터 탐색
while(left<size/2 && right<size){
if(string.charAt(left)!=string.charAt(right)){
right++;
}
else {
ans+=string.charAt(left);
left++;
right++;
}
}
return ans;
}
다른 사람의 풀이
public String sameEnds(String string){
int len = string.length();
String fin = "";
String tmp = "";
for(int i=0; i<len; i++){
tmp += string.charAt(i);//처음부터 한자씩 저장
int tmplen = tmp.length();//길이를 저장
if( i<len/2 && tmp.equals(string.substring(len-tmplen,len)))
fin = tmp;//끝부터 길이 만큼의 substring과 같은지 검사
}
return fin;
}
728x90