문자열 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