텍스트 문자열과 단어(문자열 목록)가 있다고 가정하면 하위 문자열 text[i]...text가 되도록 모든 인덱스 쌍 [i, j]을 찾아야 합니다. [j]는 단어 목록에 있습니다. 따라서 문자열이 "ababa"와 같고 단어 배열이 ["aba", "ab"]와 같으면 출력은 [[0,1], [0,2], [2,3], [2 ,4]]. 우리가 알 수 있는 한 가지는 일치 항목이 겹칠 수 있다는 것입니다. "aba"는 [0,2] 및 [2,4]에서 일치합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- res :=빈 목록
- 0에서 문자열 길이까지의 i에 대해
- 범위 i + 1에서 문자열 길이 + 1까지의 j에 대해
- 단어의 인덱스 i에서 j까지 문자열의 부분 문자열인 경우 -
- 결과 배열에 (i, j – 1) 추가
- 단어의 인덱스 i에서 j까지 문자열의 부분 문자열인 경우 -
- 범위 i + 1에서 문자열 길이 + 1까지의 j에 대해
- 반환 결과
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def indexPairs(self, text, words): result = [] for i in range(len(text)): for j in range(i+1,len(text)+1): if text[i:j] in words: result.append([i,j-1]) return result ob1 = Solution() print(ob1.indexPairs("ababa",["aba","ab"]))
입력
"ababa" ["aba","ab"]
출력
[[0,1],[0,2],[2,3],[2,4]]