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

파이썬에서 주어진 단어를 형성하기 위해 문자를 재배열할 수 있는 부분 문자열의 개수 찾기


문자열 S(모든 문자는 소문자)가 있다고 가정하면 이 단어를 형성하기 위해 문자를 재배열할 수 있는 길이가 4인 모든 하위 문자열의 개수를 찾아야 합니다. "새".

따라서 입력이 "birdb"와 같으면 출력은 2가 됩니다.

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

  • cnt :=0

  • 범위 0에서 s - 3 사이의 i에 대해 수행

    • 새 :=[0, 0, 0, 0]

      배열
    • i ~ i + 4 범위의 j에 대해 수행

      • s[j]가 'b'와 같으면

        • 새[0] :=새[0] + 1

      • 그렇지 않으면 s[j]가 'i'와 같을 때

        • 새[1] :=새[1] + 1

      • 그렇지 않으면 s[j]가 'r'과 같을 때

        • 새[2] :=새[2] + 1

      • 그렇지 않으면 s[j]가 'd'와 같을 때

        • 새[3] :=새[3] + 1

      • 새가 [1,1,1,1]과 같으면

        • cnt :=cnt + 1

  • 반환 cnt

예시

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

def number_of_occurrence(s):
   cnt = 0
   for i in range(0, len(s) - 3):
      bird = [0, 0, 0, 0]
      for j in range(i, i + 4):
         if s[j] == 'b':
            bird[0] += 1
         elif s[j] == 'i':
            bird[1] += 1
         elif s[j] == 'r':
            bird[2] += 1
         elif s[j] == 'd':
            bird[3] += 1
      if bird == [1,1,1,1]:
         cnt += 1
   return cnt
s = "birdb"
print(number_of_occurrence(s))

입력

"birdb"

출력

2