이진 문자열 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 +
- s[i]가 "0"과 같으면
- 반환 횟수
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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