【LeetCode每日一题】466. 统计重复个数

2024-1-2

文章目录

    • [466. 统计重复个数](https://leetcode.cn/problems/count-the-repetitions/)
            • 思路:

466. 统计重复个数

在这里插入图片描述

思路:
  1. ​ s1表示要重复的序列。n1表示要重复s1的次数。
    ​ s2表示要判断的子序列。n2表示子序列s2在整个序列中重复的次数。返回值表示子序列s2在重复序列s1中出现的次数。
  2. 定义一个二维数组d,其中有n行,每行只有一个元素
  3. 遍历子序列s2的每个字符
  4. 遍历重复序列s1的每个字符,统计子序列s2在重复序列s1中出现的次数
  5. 如果重复序列s1的第k个字符等于子序列s2的第j个字符
  6. j自增后等于n,说明已经遍历完子序列s2的所有字符,需要从头开始再次匹配,j清空
  7. 将统计的次数和当前j的值存入二维数组d的第i行。
  8. 循环直到s1的次数走完为止,将二维数组d中第j行的统计次数累加到ans中,更新j的值为二维数组d中第j行的下一个字符的位置
  9. 求子序列s2在重复序列s1中出现的平均次数
    public int getMaxRepetitions(String s1, int n1, String s2, int n2) {//s1表示要重复的序列。n1表示要重复s1的次数。//s2表示要判断的子序列。n2表示子序列s2在整个序列中重复的次数。// 返回值表示子序列s2在重复序列s1中出现的次数。int m = s1.length(), n = s2.length();//m和n,分别表示序列s1和s2的长度。int[][] d = new int[n][0];// 定义一个二维数组d,其中有n行,每行只有一个元素for (int i = 0; i < n; ++i) {//遍历子序列s2的每个字符int j = i;//j 表示在字符串s2中出现的位置int cnt = 0;// 统计子序列s2在重复序列s1中出现的次数for (int k = 0; k < m; ++k) {//遍历重复序列s1的每个字符if (s1.charAt(k) == s2.charAt(j)) {//如果重复序列s1的第k个字符等于子序列s2的第j个字符if (++j == n) {//如果j自增后等于n,说明已经遍历完子序列s2的所有字符,需要从头开始再次匹配j = 0;//将j重置为0,重新从子序列s2的开头开始匹配++cnt;//子序列s2在重复序列s1中出现的次数加1}}}d[i] = new int[] {cnt, j};//将统计的次数和当前j的值存入二维数组d的第i行。}int ans = 0;//用于保存子序列s2在重复序列s1中出现的总次数for (int j = 0; n1 > 0; --n1) {///每次循环将n1减1,直到n1为0,s1的次数走完为止ans += d[j][0];//将二维数组d中第j行的统计次数累加到ans中。j = d[j][1];//更新j的值为二维数组d中第j行的下一个字符的位置}return ans / n2;//子序列s2在重复序列s1中出现的平均次数}

点击移步博客主页,欢迎光临~

偷cyk的图

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年阿里云优惠券领取及使用教程

阿里云作为国内领先的云计算服务提供商&#xff0c;一直致力于为客户提供优质、高效的服务。为了更好地回馈客户&#xff0c;阿里云经常会推出各种优惠活动&#xff0c;其中就包括阿里云优惠券。本文将详细介绍如何领取及使用阿里云优惠券。 一、阿里云优惠券介绍 阿里云优惠券…

YOLOv5算法进阶改进(11)— 添加EMA注意力机制 | 基于跨空间学习的高效多尺度注意力模块

前言:Hello大家好,我是小哥谈。EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更…

理解 RPC 与 Protobuf:完整指南

一、Protobuf 数据格式简析 Protobuf 是什么&#xff1f; 在数据密集型应用领域&#xff0c;Google 开发的 Protobuf 作为一种高效数据编码方式而广受欢迎。它胜任于 JSON 及 XML 对比&#xff0c;不仅在体积和速度上表现出色&#xff0c;而且其结构化方式优化了网络传输中的…

JavaSE学习笔记 2023-12-28 --MySQL

MySQL 1.数据库介绍 数据库:数据仓库 DataBase:简称DB,用于长期存储有结构的,大量的,共享的数据长期的:持久存储,永久存储 有结构:有类型,有内部的数据类型有关系,数据与数据之前是有关联的 大量的:大多数据库都是以文件系统存在的,可以将数据存储在磁盘中 共享的:多个应用之…

【QML】与 C++ 混合编程:互相调用函数

文章目录 qml 调用 C 函数案例 a&#xff1a;Q_INVOKABLE 标记 C 函数 视图设置进 qml 属性案例 b&#xff1a;qml 通过发送信号的方式&#xff0c;调用 Qt 槽函数 C调用qml函数 qml 调用 C 函数 qml 要使用 C 的函数有两个方法&#xff1a; 一种是&#xff0c;用 Q_INVOKABLE…

软件测试/测试开发丨Python 模块与包

python 模块与包 python 模块 项目目录结构 组成 package包module模块function方法 模块定义 定义 包含python定义和语句的文件.py文件作为脚本运行 导入模块 import 模块名from <模块名> import <方法 | 变量 | 类>from <模块名> import * 注意&a…

ECharts配置个性化图表:圆环、立体柱状图

官网调试地址&#xff1a;调试 效果图&#xff1a; 配置&#xff1a; option {color: [#29BEFF, #A2DC00, #FFC400, #FF7F5C, #CA99FC],// 提示窗tooltip: {trigger: item,show: false},// 图例legend: {top: 5%,left: center,show: false},// 数据series: [{name: Access …

从fuzz视角看CTF堆题--qwb2023_chatting

前言 这个题目是一个c的堆题&#xff0c;而我自己对于c的一些内存分配不太了解&#xff0c;同时也不太会c的逆向&#xff0c;硬看是没有办法了&#xff0c;所以就想能不能通过fuzz的角度去进行利用 fuzz 大概思路 函数选择 可以看到有add delete switch read listuser mes…

vue 实现拐弯时间线,弯曲时间线,弯曲任务步骤条

需求&#xff1a; 实现可拐弯的步骤条功能 实现后效果如下&#xff1a; 代码部分&#xff1a; 创建步骤条组件Steps.vue <template><div><divstyle"width: 100%; display: flex; position: relative; margin-top: 20px"><div style"wi…

leetcode12 整数转罗马数字

题目描述&#xff1a;给定一个整数&#xff0c;将其转换为罗马数字。罗马数字由七个字符表示&#xff1a;I&#xff08;1&#xff09;、V&#xff08;5&#xff09;、X&#xff08;10&#xff09;、L&#xff08;50&#xff09;、C&#xff08;100&#xff09;、D&#xff08;5…

【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测(附代码)

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88682033 目录 【Matlab】BP 神经网络时序预测算法 【Matlab】CNN卷积神经网络时序预测算法 【Matlab】ELM极限学习机时序预测算法 【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测 【Mat…

搭建Python环境

为了能进行Python开发&#xff0c;需要搭建Python环境 搭建运行环境&#xff1a;Python 搭建开发环境&#xff1a;PyCharm 安装Python 1.点开python官网 欢迎来到 Python.orghttps://www.python.org/ 2.选择Downloads&#xff08;下载&#xff09; &#xff08;上面的…