Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 문자열의 인덱스 쌍


텍스트 문자열과 단어(문자열 목록)가 있다고 가정하면 하위 문자열 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) 추가
  • 반환 결과

예제(파이썬)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

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]]