문자열이 지정되면 문자열에서 반복되지 않는 첫 번째 문자를 찾아
인덱스를 반환합니다. 존재하지 않으면 -1을 반환합니다.
반복문을 순회하며 중복이 아닌 경우를 찾아야 했다.
Map이나 Set을 사용해 문제에 접근하는 방법도 떠올렸으나
훨씬 간단하고 쉬운 코드를 작성할 방법이 떠올랐다.
바로 lastIndexOf 메서드를 사용하는 방법이다.
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
for(let i =0; i < s.length; i++) {
const coincideString = s.indexOf(s[i]) === s.lastIndexOf(s[i]);
if(coincideString) {
return i;
}
}
return -1;
};
indexOf로 앞에서부터 뒤로 가며 순회하고
lastIndexOf로 뒤에서 앞으로 순회하며 값을 체크했다.
두 값이 같다는 건 중복 없이 같은 idx에 위치한다는 것을 의미하므로
해당 idx를 리턴하면 해결이 가능했다.
사실 너무 꼼수 기질이 강해 위에서 말한 Map과 Set을 사용해서도 한 번 풀이를 해봐야겠다.
Reference
lastIndexOf에 대해 알고싶다면: https://www.codingfactory.net/10402
'Algorithm' 카테고리의 다른 글
Leetcode 409. Longest Palindrome (0) | 2023.03.08 |
---|---|
Leetcode 389. Find the Difference (0) | 2023.03.03 |
Leetcode 374. Guess Number Higher or Lower (0) | 2023.02.28 |
Leetcode 338. Counting Bits (0) | 2023.02.24 |
LeetCode 303. Range Sum Query - Immutable (0) | 2023.02.22 |