• 1759. Count Number of Homogenous Substrings


    package LeetCode_1759
    
    /**
     * 1759. Count Number of Homogenous Substrings
     * https://leetcode.com/problems/count-number-of-homogenous-substrings/
     * Given a string s, return the number of homogenous substrings of s.
     * Since the answer may be too large, return it modulo 10^9 + 7.
    A string is homogenous if all the characters of the string are the same.
    A substring is a contiguous sequence of characters within a string.
    
    Example 1:
    Input: s = "abbcccaa"
    Output: 13
    Explanation: The homogenous substrings are listed as below:
    "a"   appears 3 times.
    "aa"  appears 1 time.
    "b"   appears 2 times.
    "bb"  appears 1 time.
    "c"   appears 3 times.
    "cc"  appears 2 times.
    "ccc" appears 1 time.
    3 + 1 + 2 + 1 + 3 + 2 + 1 = 13.
    
    Example 2:
    Input: s = "xy"
    Output: 2
    Explanation: The homogenous substrings are "x" and "y".
    
    Example 3:
    Input: s = "zzzzz"
    Output: 15
    
    Constraints:
    1. 1 <= s.length <= 10^5
    2. s consists of lowercase letters.
     * */
    class Solution {
        /*
        Solution: keep counting the same char then update sameCharCount and result,
        and reset sameCharCount=1 when current char not equal last char;
        Time:O(n), Space:O(1)
        * */
        fun countHomogenous(s: String): Int {
            val mod = 1000000007
            var lastChar: Char? = null
            var result = 0
            var sameCharCount = 0
            for (c in s) {
                if (lastChar == null || lastChar == c) {
                    sameCharCount++
                } else {
                    sameCharCount = 1
                }
                lastChar = c
                result = (result + sameCharCount) % mod
            }
            return result
        }
    }
  • 相关阅读:
    xss框架(一)之浏览器通信
    Joomla未授权创建特权用户漏洞和getshell脚本解析
    从零开始写网站登录爆破(一)
    CSRF学习整理
    vue中vue2-google-maps使用谷歌地图的基础操作
    vue中百度地图API的调用
    60秒定时减少
    git操作指令,以及常规git代码操作
    taro taroUi的H5打包后路径/修改为./
    vue enter事件无效,加入native
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/15145226.html
Copyright © 2020-2023  润新知