​力扣解法汇总1759. 统计同构子字符串的数目

news2024/12/22 14:30:27

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个字符串 s ,返回 s 中 同构子字符串 的数目。由于答案可能很大,只需返回对 109 + 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 <= 105
  • s 由小写字符串组成

解题思路:

* 解题思路:
* 求和即可。比如abbcccaa,则分别求出a,bb,ccc,aa的和

代码:

public class Solution1759 {

    Map<Integer, Long> cacheMap = new HashMap<>();
    int max = 0;
    int MOD = 10_0000_0007;

    public int countHomogenous2(String s) {
        int index = 1;
        int currentLength = 1;
        char[] chars = s.toCharArray();
        char lastChar = chars[0];
        long sum = 0;
        while (index <= chars.length) {
            if (index == chars.length) {
                long value = getCacheMap(currentLength);
                sum += value;
                break;
            }
            char valueChar = chars[index];
            index++;
            if (lastChar == valueChar) {
                currentLength++;
                continue;
            }
            long value = getCacheMap(currentLength);
            sum += value;
            lastChar = valueChar;
            currentLength = 1;
        }
        return (int) (sum % MOD);
    }

    private long getCacheMap(int current) {
        if (current <= max) {
            return cacheMap.get(current);
        }
        long sum = cacheMap.getOrDefault(max, 0L);
        for (int i = max + 1; i <= current; i++) {
            sum += i;
            cacheMap.put(i, sum);
        }
        max = current;
        return cacheMap.get(current);
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC使用Jackson、双向关联的解决策略@JsonIgnore

目录:一、SpringMVC和Jackson的关系&#xff1a;二、Jackson解决双向关联导致的栈溢出问题的解决方法&#xff1a;三、如何使用JsonIgnore&#xff1a;一、SpringMVC和Jackson的关系&#xff1a; SpringMVC返回return Object类型数据给前端时会自动调用jackson将Object类型的数…

pytorch深度学习常用命令

文章目录命令目录.item().items&#xff08;&#xff09;最大值的索引torch.argmax(input, dimNone, keepdimFalse)_, predicted torch.max(outputs.data, 1).data.detachunsqueeze()squeeze()命令目录 .item() 只是一个值 &#xff08;浮点型的&#xff09;&#xff0c;适合…

计算机基础知识(基础入门小白专属)三

♥️作者&#xff1a;小刘在这里 ♥️每天分享云计算网络运维课堂笔记&#xff0c;疫情之下&#xff0c;你我素未谋面&#xff0c;但你一定要平平安安&#xff0c;一 起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放&#xff0c;…

精通MyBatis原理,看这两篇就够了!|原创

本文详细介绍了阅读MyBatis源码的学习思路&#xff0c;并且对源码做了详细注释&#xff0c;讲解了整个Mybatis的启动过程。本文篇幅较长&#xff0c;建议收藏阅读&#xff0c;非常适合用于面试前的重点复习。点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c…

BSV 上的零知识隐私机器学习

此前&#xff0c;我们已经演示了在 BSV 上运行一个成熟的深度神经网络&#xff0c;其中机器学习 (ML) 算法的输入和模型都是公开的。在实践中&#xff0c;通常希望将输入或模型保持在链下并因此保持私有&#xff0c;同时仍确保 ML 算法如实运行。我们通过将零知识证明 (ZKP) 应…

你确定没有滥用 goroutine 吗

写在前面 学习 golang &#xff0c;路还很长呢&#xff0c;犹记得刚开始学习 golang 的时候&#xff0c;写起来确实非常简单&#xff0c;有很多包和工具使用&#xff0c;不需要重复造轮子&#xff0c;但是要真的学好一门语言作为工具&#xff0c;对于其原理是非常有必要学懂的…

极限多标签学习综述(Extreme Multi-label Learning)

A Survey on Extreme Multi-label Learning 先给地址&#xff1a; https://arxiv.org/abs/2210.03968 博主曾整理过Multi-Label Image Classification&#xff08;多标签图像分类&#xff09;&#xff0c;但这类任务中所用的数据集往往较小&#xff0c;分类数量并不多。但在更…

JavaScript的原型链

JavaScript的原型链 JavaScript的继承主要是通过原型链实现的&#xff0c;所以理解原型链是掌握JavaScript继承的关键一环。原型链的继承的基本思想是通过原型链继承多个引用类型的属性和方法。 理解原型链 关于原型链的定义与理解&#xff1a; 每个构造函数都有一个原型对…

Python实现将位图描摹为彩色矢量 svg 图片的源代码,Python实现位图转彩色矢量代码

Color Trace 这是一个将位图描摹为彩色矢量 svg 图片的程序&#xff0c;是一个命令行工具&#xff0c;使用 Python 脚本实现&#xff0c;运行环境 Python3.8。 ✨ 效果 以一个字帖图片为例&#xff0c;这是 png 格式的位图&#xff08;370KB&#xff09;&#xff1a; 这是颜…

多智能体强化学习环境【星际争霸II】SMAC环境配置

多智能体强化学习这个领域中&#xff0c;很多Paper都使用的一个环境是——星际争多智能体挑战(StarCraft Multi-Agent Challenge, SMAC)。最近也配置了这个环境&#xff0c;把中间一些步骤记录下来。2022.12.26 文章目录1 环境介绍1.1 相关论文1.2 项目代码地址2 安装过程3 相关…

2023年pmp的考试时间是什么时候?(含pmp资料)

不出意外&#xff0c;按照原计划&#xff0c;就是3、6、9、12月&#xff0c;22年11月延期考试地区的考生或者退考的估计会在3月或者6月考。具体就及时关注官网消息。 ​新版中文报名网站&#xff1a;中国国际人才交流基金会 这里说一下PMP的基本考试情况&#xff1a; 【考试注…

模型实战(2)之YOLOv5 实时实例分割+训练自己数据集

模型实战&#xff08;2&#xff09;之YOLOv5 实时实例分割训练自己数据集 本文将详解YOLOv5实例分割模型的使用及从头训练自己的数据集得到最优权重&#xff0c;可以直接替换数据集进行训练的训练模型可通过我的gitcode进行下载&#xff1a;https://gitcode.net/openmodel/yolo…

使用matplotlib画图 + python色彩大全

目录画线画点散点画点的形状、线的形状画点线在特定位置写文字plt.legend()中图例的位置方法一 plt.legend(loc4)方法二 plt.legend(bbox_to_anchor(num1, num2))方法三 bbox_to_anchor(1.05, 1), loc2, borderaxespad0保存图片指定图片大小网格线根据自己的需求做了一个画图的…

图的最短路径

文章目录单源最短路径-Dijkstra算法单源最短路径--Bellman-Ford算法多源最短路径--Floyd-Warshall算法单源最短路径-Dijkstra算法 针对一个带权有向图G&#xff0c;将所有结点分为两组S和Q&#xff0c;S是已经确定最短路径的结点集合&#xff0c;在初始时为空&#xff08;初始…

如何使用监控诊断工具Arthas(阿尔萨斯)

Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类加载信…

【python】实现精美圣诞树-拿下女神不是梦

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

Java Web基础面试题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…

【K3s】第4篇 一篇文章带你了解使用Kompose

目录 1、Kompose介绍 2、安装Kompose 3、docker-compose文件转换为k8s文件 1、Kompose介绍 kompose是一个帮助熟悉 Kubernetes 的用户迁移到k8s的工具。 获取 Docker Compose 文件并将其转换为 Kubernetes 资源。 kompose是一个方便的工具&#xff0c;可以从本地 Docker …

Ffuf爆破神器(超详细)

目录为什么是Ffuf基本使用最基本的使用多个字典同时使用带cookie扫描&#xff08;-b&#xff09;静默模式&#xff08;-s&#xff09;递归扫描&#xff08;-recursion&#xff09;指定扩展名&#xff08;-e&#xff09;POST请求爆破方式1&#xff1a;指明请求地址和请求体【不推…

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…