1. 描述:
    2. 给出一个只包含01的字符串str,请返回这个字符串中全为0的子字符串的个数
    3. 1<=|str|<=30000
    4. 样例1:
    5. 输入:"00010011" 输出:9 解释: "0"子字符串有5个, "00"子字符串有3个, "000"子字符串有1个。 所以返回9
    6. 样例2:
    7. 输入: "010010" 输出: 5

    解题思路1:
    暴力数学法:
    通过数学方法解决该问题字符串个数公式为(1+n)*n/2

    解题代码

    1. public static void main(String[] args) {
    2. //int [] A = new int[] {1,1,2};
    3. String str = "0001001";
    4. stringCount(str);
    5. }
    6. public static int stringCount(String str) {
    7. int m = 0;
    8. int n = 0;
    9. char[] cs = str.toCharArray();//返回字符数组
    10. for (char c : cs) {//遍历字符数组
    11. //System.out.println(c);
    12. if (c=='0') {//如果字符等于'0'
    13. n++;//那么n+1
    14. }else {//如果字符不等于'0'
    15. m+=(1+n)*n/2;//m等于1到n的和。。即m=1到n的和
    16. n=0;
    17. }
    18. }
    19. if (n!=0) {
    20. m+=(1+n)*n/2;
    21. }
    22. System.out.println(m);
    23. return m;
    24. }