Algorithm
Leetcode 290. Word Pattern (javascript)
KANG_G1
2023. 2. 20. 10:23
패턴과 문자열 s가 지정된 경우 s가 동일한 패턴을 따르는지 여부를 찾는 문제.
처음엔 이중 for문으로 접근을 해야하는 문제로 파악했지만 해결할 수 없었고
Map을 활용한 문제 접근을 해서 테스트는 통과했지만 제출에는 실패했다.
패턴과 문자열의 lengh는 같지만 동일한 문자가 반복되는 문자열일 경우에 대한 예외처리가 없었기 때문이다.
중복을 허용하지 않는 Set의 size를 비교해 예외 케이스를 작성해주어 제출이 가능했다.
/**
* @param {string} pattern
* @param {string} s
* @return {boolean}
*/
var wordPattern = function(pattern, s) {
const word = s.split(' ');
const map = new Map();
const patternSet = new Set(pattern);
const sSet = new Set(word);
if(pattern.length !== word.length) return false;
if(patternSet.size !== sSet.size) return false;
for(let i=0; i<pattern.length; i++){
if(map.has(pattern[i]) && map.get(pattern[i]) !== word[i]) return false;
map.set(pattern[i],word[i]);
}
return true;
};