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

파이썬에서 주어진 문자열에서 고유한 부분 문자열의 수를 찾는 프로그램

<시간/>

''로 표시된 부분 문자열이 주어진다고 가정합니다. 고유한 부분 문자열을 찾아 이 부분 문자열의 수를 출력으로 반환해야 합니다.

따라서 입력이 s ='prrstvt'와 같으면 출력은 26이 됩니다.

고유한 하위 문자열은 -

'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv ', 'rrstv', 'rst', 'v', 'tvt', 'rstvt', 'r', 'rs', 'vt', 't', 'prr', 'p', 'rrst', 및 'prrs'.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 방문함:=새 지도
  • 각 인덱스 ind 및 값 let in s에 대해 do
    • temp :=새로운 세트
    • 방문에 ind-1이 있으면
      • 방문한[ind-1]의 각 has_let에 대해 다음을 수행합니다.
        • 임시 목록에 추가(has_let + let)
    • 임시 목록에 추가(let)
    • 방문[ind] :=임시
  • res :=새로운 세트
  • 방문한 각 세트에 대해 다음을 수행합니다.
    • res에 추가(방문[세트])
  • res의 반환 크기

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(s):Visited =dict() for ind, let in enumerate(s):temp =set() if ind-1 in visit:for has_let invisited[ind-1]:temp.add( has_let+let) temp.add(let) 방문[ind] =임시 res =set() 방문:res.update(visited[sets]) return len(res)print(solve('prrstvt')) 

입력

'prrstvt'

출력

26