데브허브 | DEVHUB | Valid Word Abbreviation - Leetcode 408 - PythonValid Word Abbreviation - Leetcode 408 - Python
- 주어진 단어와 약어가 유효한지 판별하는 문제로, 약어는 문자열의 일부를 해당 길이의 숫자로 대체할 수 있습니다. 🎯
- 약어 규칙에는 숫자가 인접할 수 없고(예: 's55n' 대신 's10n'), 숫자가 0으로 시작하거나 0 자체일 수 없다는 조건이 있습니다. 🚫
- 해결책은 단어와 약어에 각각 포인터(i, j)를 두고 동시에 스캔하는 투 포인터 방식입니다. ✌️
- 문자가 일치하면 두 포인터를 모두 이동시키고, 약어에 숫자가 나타나면 해당 숫자를 파싱하여 단어 포인터를 그 숫자만큼 건너뜁니다. ⏩
- 숫자 파싱 시, '0'으로 시작하는 경우나 약어의 문자가 단어의 문자와 일치하지 않는 경우 즉시 유효하지 않다고 판단합니다. ❌
- 모든 스캔이 끝났을 때, 두 포인터가 각 문자열의 끝에 정확히 도달해야만 유효한 약어로 간주됩니다. 🏁
- 시간 복잡도는 O(N+M) (N: 단어 길이, M: 약어 길이), 공간 복잡도는 O(1)입니다. ⏱️