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

Python의 이진 문자열에서 모두 1로 부분 문자열을 계산하는 프로그램

<시간/>

이진 문자열 s가 있다고 가정합니다. "1"만 포함하는 부분 문자열의 수를 찾아야 합니다. 답이 너무 크면 결과를 10^9+7로 수정합니다.

따라서 입력이 s ="100111"과 같으면 "1"만 포함하는 하위 문자열이 ["1", "1", "1", "1", "11"이기 때문에 출력은 7이 됩니다. , "11" 및 "111"]

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

  • a :=0
  • 카운트:=0
  • 0 ~ s - 1 크기 범위의 i에 대해
    • s[i]가 "0"과 같으면
      • a :=0
    • 그렇지 않으면
      • a :=a + 1
      • count :=count +
  • 반환 횟수

예시

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

def solve(s):
   a = 0
   count = 0
   for i in range(len(s)):
      if s[i] == "0":
         a = 0
      else:
         a += 1
         count += a
   return count

s = "100111"
print(solve(s))

입력

"100111"

출력

7