🎲 문제
290. Word Pattern
Easy
패턴과 문자열 s가 주어지면 s가 동일한 패턴을 따르는지 확인합니다.
여기서 follow는 패턴의 문자와 s의 비어 있지 않은 단어 사이에 이항이 있는 완전 일치를 의미합니다.
ps. 주어진 패턴과 맞는지 확인 하는 문제
더보기
Given a pattern
and a string s
, find if s
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in s
.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Constraints:
1 <= pattern.length <= 300
pattern
contains only lower-case English letters.1 <= s.length <= 3000
s
contains only lowercase English letters and spaces' '
.s
does not contain any leading or trailing spaces.- All the words in
s
are separated by a single space.
💡 접근 방법
- 공백으로 문자열 잘라서 배열로 만들기
- pattern과 문자열 배열 length를 비교하고 다르면 false 반환
- pattern Map 생성
- str Map 생성
- forloof 로 탐색
- false 조건
- pMap 이 pattern[i]를 가지고 있고, pMap의 pattern[i]가 sArr[i]가 다른 경우
- OR
- sMap 이 sArr[i]를 가지고 있고, sArr의 sArr[i]가 pattern[i] 같지 않은 경우
- 각 맵에 key value set으로 추가
- foorloof 완료 -> true
/**
* @param {string} pattern
* @param {string} s
* @return {boolean}
*/
var wordPattern = function (pattern, s) {
const sArr = s.split(" ");
if (sArr.length !== pattern.length) return false;
const pMap = new Map();
const sMap = new Map();
for (let i = 0; i < pattern.length; i++) {
if (
(pMap.has(pattern[i]) && pMap.get(pattern[i]) !== sArr[i]) ||
(sMap.has(sArr[i]) && sMap.get(sArr[i]) !== pattern[i])
) {
return false;
}
pMap.set(pattern[i], sArr[i]);
sMap.set(sArr[i], pattern[i]);
}
return true;
};
❌ 실패 코드
"ABBA", "dog dog dog dog" 일때를 생각하지 않은 코드
/**
* @param {string} pattern
* @param {string} s
* @return {boolean}
*/
var wordPattern = function (pattern, s) {
const sArr = s.split(" ");
if (sArr.length !== pattern.length) return false;
const pMap = new Map();
for (let i = 0; i < pattern.length; i++) {
if (pMap.has(pattern[i]) && pMap.get(pattern[i]) !== sArr[i]) return false;
pMap.set(pattern[i], sArr[i]);
}
return true;
};
'DS & Algo > 풀이모음' 카테고리의 다른 글
[leetcode/JS] 40_Combination Sum II 풀이 (0) | 2022.12.01 |
---|---|
[leetcode/JS] 326_Power of Three 풀이 (0) | 2022.12.01 |
[leetcode/JS] 808_Soup Servings 풀이 (0) | 2022.11.28 |
[leetcode/JS] 387_First Unique Character in a String 풀이 (0) | 2022.11.28 |
[leetcode/JS] 292_Nim Game 풀이 (0) | 2022.11.28 |
댓글