각 단어의 길이가 같은 단어라는 소문자 문자열 목록이 있다고 가정합니다. 한 문자만 다른 두 개의 문자열이 있는지 확인해야 합니다.
따라서 입력이 단어 =["seed", "pick", "lick", "root", "live"]와 같으면 "pick" 및 "lick"이 거의 같기 때문에 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s :=새로운 세트
- 단어의 각 단어에 대해 수행
- 단어의 각 색인 i와 단어 w에 대해 do
- 단어[인덱스 0에서 i - 1까지]의 하위 문자열이 s에 있는 경우 "*" 연결 단어[인덱스 i + 1에서 끝까지]가 s에 있으면
- 참 반환
- 그렇지 않으면
- insert(단어[인덱스 0에서 i-1까지] 연결 "*" 연결 단어[인덱스 i + 1에서 끝까지])를 s에 삽입
- 단어[인덱스 0에서 i - 1까지]의 하위 문자열이 s에 있는 경우 "*" 연결 단어[인덱스 i + 1에서 끝까지]가 s에 있으면
- 단어의 각 색인 i와 단어 w에 대해 do
- 거짓을 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(words): s = set() for word in words: for i, w in enumerate(word): if word[:i] + "*" + word[i + 1 :] in s: return True else: s.add(word[:i] + "*" + word[i + 1 :]) return False words = ["seed", "pick", "lick", "root", "live"] print(solve(words))
입력
["seed", "pick", "lick", "root", "live"]
출력
True