【携程秋招】230907四、好串数量 <模拟>

【携程秋招】230907四、好串数量

有一个只包含'0'和'1'的字符串,想知道这个字符串有多少个好子串?

一个字符串如果是好串,那么该字符串的所有前缀,'0'的数量严格大于'1'的数量。

输入:

一个只含'0'和'1'的字符串,长度不超过100000。

输出:

一个整数,代表答案。

输入:

java 复制代码
100

输出

java 复制代码
3

说明

java 复制代码
子区间[2,2]、[2,3]、[3,3]组成的子串都是一个好串。

输入:

java 复制代码
10010

输出

java 复制代码
6

说明

java 复制代码
子区间[2,2]、[2,3]、[3,3]、[2,4]、[2,5]、[5,5]组成的子串都是一个好串。

题解

举例说明:

例如0011100

应该为1+2+1+0+0+1+2=7

由等式找规律

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.next();

        long curSum = 0;
        long count = 0;
        for (int i = 0; i < str.length(); i++) {
            //是0
            if (str.charAt(i) == '0') {
                curSum++;
            }
            //是1
            else {
                curSum--;
            }

            if (curSum >= 1) {
                count += curSum;
            } else {
                curSum = 0;
            }
        }
        System.out.println(count);

    }
}
相关推荐
沐知全栈开发14 小时前
CSS 下拉菜单
开发语言
WJX_KOI14 小时前
保姆级教程:Apache Flink CDC(standalone 模式)部署 MySQL CDC、PostgreSQL CDC 及使用方法
java·大数据·mysql·postgresql·flink
追随者永远是胜利者14 小时前
(LeetCode-Hot100)49. 字母异位词分组
java·算法·leetcode·职场和发展·go
吴声子夜歌14 小时前
RxJava——Flowable与背压
android·java·rxjava
Thanwind14 小时前
大二上结束随笔
java
keyborad pianist14 小时前
Web开发 Day1
开发语言·前端·css·vue.js·前端框架
坚持就完事了14 小时前
Python的类型注解
开发语言·python
wjs202414 小时前
HTML URL 编码
开发语言
wjs202414 小时前
Lua 循环
开发语言
Evand J14 小时前
matlab GUI制作界面的一些笔记(入门)
开发语言·笔记·matlab