
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
인덱스가 0부터 시작하는 인덱스를 가진 원형 문자열 배열 words와 문자열 target이 주어진다. 원형 배열이란 배열의 끝이 다시 배열의 시작 부분과 연결되는 구조를 의미한다.
startIndex에서 시작해서 한 번에 한 단계씩 다음 단어 또는 이전 단어로 이동할 수 있다.
문자열 target에 도달하는 데 필요한 최단 거리를 반환해라. 만약 words에 target이 존재하지 않는다면 -1을 반환해라.
#1
Input: words = ["hello", "i", "am", "leetcode", "hello"], target = "hello", startIndex = 1
Output: 1
Explanation: 인덱스가 1부터 시작해서 "hello"에 도달할 수 있다.
- 오른쪽으로 3칸 이동해서 인덱스 4에 도달한다.
- 왼쪽으로 2칸 이동해서 인덱스 4에 도달한다.
- 오른쪽으로 4칸 이동해서 인덱스 0에 도달한다.
- 왼쪽으로 1칸 이동해서 인덱스 0에 도달한다.
"hello"에 도달하는 가장 짧은 거리는 1이다.
#2
Input: words = ["a", "b", "leetcode"], target = "leetcode", startIndex = 0
Output: 1
Explanation: 인덱스가 0부터 시작해서 "leetcode"에 도달할 수 있다.
- 오른쪽으로 2칸 이동해서 인덱스 2에 도달한다.
- 왼쪽으로 1칸 이동해서 인덱스 2에 도달한다.
"leetcode"에 도달하는 가장 짧은 거리는 1이다.
#3
Input: words = ["i", "eat", "leetcode"], target = "ate", startIndex = 0
Output: -1
Explanation: words에서 "ate"가 존재하지 않아서, -1을 반환한다.
class Solution {
public int closestTarget(String[] words, String target, int startIndex) {
int min = Integer.MAX_VALUE;
int n = words.length;
for(int i = 0; i < n; i++){
if(words[i].equals(target)){
int diff = Math.abs(startIndex - i);
int dist = Math.min(diff, n - diff);
min = Math.min(min, dist);
}
}
return min == Integer.MAX_VALUE ? -1 : min;
}
}