文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个字符串 s ,返回 s 中 同构子字符串 的数目。
由于答案可能很大,只需返回对 10^9 + 7 取余 后的结果。

同构字符串 的定义为:如果一个字符串中的所有字符都相同,那么该字符串就是同构字符串。

子字符串 是字符串中的一个连续字符序列。

示例 1:
输入:s = "abbcccaa"
输出:13
解释:同构子字符串如下所列:
"a"   出现 3 次。
"aa"  出现 1 次。
"b"   出现 2 次。
"bb"  出现 1 次。
"c"   出现 3 次。
"cc"  出现 2 次。
"ccc" 出现 1 次。
3 + 1 + 2 + 1 + 3 + 2 + 1 = 13示例 2:
输入:s = "xy"
输出:2
解释:同构子字符串是 "x" 和 "y" 。示例 3:
输入:s = "zzzzz"
输出:15提示:
1 <= s.length <= 10^5
s 由小写字符串组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-number-of-homogenous-substrings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录连续一样的字符的个数 n,这段内的同构子字符串个数是 n∗(n+1)/2n*(n+1)/2n∗(n+1)/2
class Solution {public:int countHomogenous(string s) {int ans = 0, n = 0, num = 0, mod = 1e9+7;char prev = s[0];for(int i = 0; i < s.size(); ++i){if(s[i] == prev){n++;}else if(s[i] != prev){prev = s[i];num = (1LL*(1+n)*n/2)%mod;n = 1;ans = (ans + num)%mod;}}num = (1LL*(1+n)*n/2)%mod;ans = (ans + num)%mod;return ans;}
};

24 ms 11.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1759. 统计同构子字符串的数目相关推荐

  1. C++描述 LeetCode 5677. 统计同构子字符串的数目

    C++描述 LeetCode 5677. 统计同构子字符串的数目   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写 ...

  2. [M数学] lc1759. 统计同构子字符串的数目(数学+等差求和)

    文章目录 1. 题目来源 2. 题目解析 1. 题目来源 链接:1759. 统计同构子字符串的数目 2. 题目解析 分析题目,连续字符串对答案的贡献实际上是 等差数列求和 即可,采用双指针求出连续字符 ...

  3. Leetcode.1641 统计字典序元音字符串的数目

    题目链接 Leetcode.1641 统计字典序元音字符串的数目 Rating : 1519 题目描述 给你一个整数 n,请返回长度为 n.仅由元音 (a, e, i, o, u)组成且按 字典序排列 ...

  4. LeetCode 1641. 统计字典序元音字符串的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量. 字符串 s 按 字典序排列 需要满足 ...

  5. 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点

    文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...

  6. 拆分字符串使唯一子字符串的数目最大

    思路: 方法一:回溯 拆分给定的字符串,要求拆分后的每个子字符串唯一,求子字符串的最大数目,可以通过回溯算法实现. 对于长度为 n的字符串,有n−1个拆分点.从左到右遍历字符串,对于每个拆分点,如果在 ...

  7. LeetCode 459. 重复的子字符串(数学)

    1. 题目 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: T ...

  8. 字符串删除首尾_[LeetCode] 459. 重复的子字符串

    题目链接: https://leetcode-cn.com/problems/repeated-substring-pattern 难度:简单 通过率:42.6% 题目描述: 给定一个非空的字符串,判 ...

  9. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

最新文章

  1. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
  2. python gui 可视化开发工具_用c语言输出九九乘法口诀表
  3. 联想笔记本计算机服务在哪里,北京联想电脑服务站都在哪里?我在宣武门应当到哪里去修电脑呢?(高额悬赏 )...
  4. mysql范围查找性能_MYSQL(四)查询性能优化
  5. 向量与向量的叉积和向量与矩阵的叉积数学表达式与python 实现
  6. NYOJ最长公共子序列(dp)
  7. Vue 路由懒加载
  8. Java多线程详解(线程池)
  9. paip.lbmall 安装doc
  10. android 微信 语音转文字,微信语音转文字功能
  11. LDPC — 信道编码
  12. 以“丰满”形容盛唐气象是误解
  13. kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析
  14. k8s FailedCreatePodSandBox: Failed create pod sandbox
  15. mac安装软件提示没有权限
  16. 【竞品分析】Android音乐播放器的竞品分析
  17. mysql的首字母大写_修改MySQL字段为首字母大写
  18. 零时科技 || DPC攻击事件分析
  19. java八大基本数据类型及其封装类
  20. PAT 1063 计算谱半径

热门文章

  1. Linux基本操作【作业】
  2. 第一季2:视频设备开发的技术流
  3. c++远征之多态篇——虚函数及其实现原理
  4. 嵌入式Linux系统的构成和启动总结
  5. shell 替换字符串的几种方法,变量替换${},sed,awk
  6. Spark Core
  7. C# 6.0语法新特性体验(二)
  8. Oracle定时器(Job)各时间段写法汇总
  9. 来了就不会空着手回去.
  10. 使用python game写一个贪吃蛇游戏