728x90
문제 설명
정답
class Solution {
public int[] solution(String s) {
int[] answer = new int[s.length()];
// 문자열의 길이만큼 반복
for(int i=0; i<s.length(); i++){
if(i != 0){
// i가 0이 아니면, 실행
// index변수에 현재 문자열의 직전 문자열까지 추출 후, 현재 문자열의
// lastIndex를 조회하고 index 변수에 저장
// substring으로 추출한 문자열중에 현재 문자열이 없다면 -1반환
int index = s.substring(0,i).lastIndexOf(s.charAt(i));
// ex) i == 3 s.substring(0,3 == ban
// s.charAt(i)는 a이고 ban에서 a의 마지막 인덱스는 1이므로 index에 1 저장
// index가 -1이 아니라면 == 현재 문자열이 이전 문자열중에 있다면
if(index != -1){
// answer 배열에 i-index의 값을 넣어준다
answer[i] = i - index;
}else{
// 이전 문자열중에 현재 문자열이 존재하지 않다면 -1을 넣어준다
answer[i] = -1;
}
}else{
// i가 0이면(첫번째 문자열이면) answer배열에 -1 넣기
answer[i] = -1;
}
}
return answer;
}
}
-> substring 메서드로 현재 문자열의 직전 문자열까지 추출한다.
-> 추출한 문자열 중에서 현재 문자열의 lastIndex를 추출한다.
-> 추출한 문자열 중에서 현재 문자열이 존재하지 않다면 -1을 index 변수에 저장한다.
-> 존재한다면, 마지막 인덱스 번호를 index변수에 저장한다.
-> index번호를 이용해서 (현재 문자열의 인덱스번호 - index(이전 문자열중 현재 문자열의 마지막 위치)) 의 값을 answer 배열에 넣어준다.
배운것
lastIndexOf( )
- lastIndexOf 메소드는 주어진 문자 또는 문자열이 나타나는 가장 뒤쪽 위치의 인덱스를 반환합니다. 만약 해당 문자 또는 문자열이 없으면 -1을 반환합니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 문자열 잘라서 정렬하기(JAVA) (1) | 2023.12.06 |
---|---|
프로그래머스 모스부호(1) JAVA (0) | 2023.11.29 |
프로그래머스 2016년 (0) | 2023.11.23 |
프로그래머스 명예의 전당 (1) (0) | 2023.11.22 |
프로그래머스 무작위로 K개의 수 뽑기 (0) | 2023.11.13 |