• 1513. Number of Substrings With Only 1s


    Given a binary string s (a string consisting only of '0' and '1's).

    Return the number of substrings with all characters 1's.

    Since the answer may be too large, return it modulo 10^9 + 7.

    Example 1:

    Input: s = "0110111"
    Output: 9
    Explanation: There are 9 substring in total with only 1's characters.
    "1" -> 5 times.
    "11" -> 3 times.
    "111" -> 1 time.

    Example 2:

    Input: s = "101"
    Output: 2
    Explanation: Substring "1" is shown 2 times in s.
    

    Example 3:

    Input: s = "111111"
    Output: 21
    Explanation: Each substring contains only 1's characters.
    

    Example 4:

    Input: s = "000"
    Output: 0
    

    Constraints:

    • s[i] == '0' or s[i] == '1'
    • 1 <= s.length <= 10^5]
    class Solution {
        public int numSub(String s) {
            int mod = 1000000007;
            int len = 0;
            int res = 0;
            char[] arr = s.toCharArray();
            for(int i = 0; i < arr.length; i++){
                if(arr[i] == '1'){
                    len++;
                    res = (res + len) % mod;
                }
                else len = 0;
            }
            return res % mod;
        }
    }

    看连续1的数量,比如111,res就是1+2+3,遇到0就重置0

    总结:

    We see that for a string with all 1 like 111, it has substring of all 1's like 1, 1,1 11, 11, 111. Totally 6 which is made by 1 + 2 + 3

    So we iterate the string, when it's 1 we make len++, res = (res+len)%mod, when it's 0 we make len = 0. Finally we get the answer. 

  • 相关阅读:
    (一)单例模式
    mysql数据库知识
    JavaScript
    Spring整合AspectJ的AOP
    Spring-AOP
    JDK代理和CGLIB代理
    mybatis-dao开发
    mybatis-入门
    CSS2.1
    HTML基础
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13291354.html
Copyright © 2020-2023  润新知