Word Pattern - LeetCode
Can you solve this real interview question? Word Pattern - 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
leetcode.com
문제
pattern과 s의 구조가 같은지 판별하는 문제입니다. 문자열 pattern이 반복되는 구조가 s에서 단어가 반복되는 구조와 같은지 판별하면 됩니다.
풀이
1. 이전 게시글에서 풀었던 것과 마찬가지로 pattern과 s에서 새로운 문자 / 단어를 발견할 때마다 각 patternA 와 patternB에 저장해줍니다.
2. 결과 배열에도 새로운 문자를 의미하는 숫자를 추가합니다.
3. 만약 새로운 문자일 경우 현재까지의 patternA 혹은 patternB의 길이가 해당 문자를 의미하는 숫자가 됩니다.
4. 만약 기존에 마주쳤던 문자일 경우 patternA 혹은 patternB에서 해당 인덱스를 찾아 result에 추가합니다.
5. resultA와 B를 비교하여 같으면 True를 다르면 False를 반환합니다.
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
sArr = s.split()
if len(pattern) != len(sArr): return False
patternA = []
patternB = []
resultA, resultB = [], []
for i in range(len(pattern)):
if pattern[i] not in patternA:
resultA.append(len(patternA))
patternA.append(pattern[i])
else:
resultA.append(patternA.index(pattern[i]))
if sArr[i] not in patternB:
resultB.append(len(patternB))
patternB.append(sArr[i])
else:
resultB.append(patternB.index(sArr[i]))
if resultA == resultB:
return True
else:
return False
'자료구조,알고리즘' 카테고리의 다른 글
LeetCode-148 Sort List 파이썬 풀이 (0) | 2023.09.05 |
---|---|
LeetCode-128 Longest Consecutive Sequence 파이썬 풀이 (0) | 2023.09.01 |
LeetCode-49 Group Anagrams 파이썬 풀이 (0) | 2023.09.01 |
LeetCode-202 Happy Number 파이썬 풀이 (0) | 2023.09.01 |
LeetCode-150 Evaluate Reverse Polish Notation 파이썬 문제 풀이 (0) | 2023.09.01 |