Leetcode 466.统计重复个数
统计重复个数
定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n]。例如,["abc", 3]="abcabcabc"。
另一方面,如果我们可以从 s2 中删除某些字符使其变为 s1,我们称字符串 s1 可以从字符串 s2 获得。例如,"abc" 可以根据我们的定义从 "abdbec" 获得,但不能从 "acbbe" 获得。
现在给出两个非空字符串 S1 和 S2(每个最多 100 个字符长)和两个整数 0 ≤ N1 ≤ 106 和 1 ≤ N2 ≤ 106。现在考虑字符串 S1 和 S2,其中S1=[s1,n1]和S2=[s2,n2]。找出可以使[S2,M]从 S1 获得的最大整数 M。
示例:
输入:
s1 ="acb",n1 = 4
s2 ="ab",n2 = 2
返回:
2

int getMaxRepetitions(string s1, int n1, string s2, int n2)
{
int index = 0, repeat_count = 0;
int s1_size = s1.size(), s2_size = s2.size();
for (int i = 0; i < n1; i++) {
for (int j = 0; j < s1_size; j++) {
if (s1[j] == s2[index])
++index;
if (index == s2_size) {
index = 0;
++repeat_count;
}
}
}
return repeat_count / n2;
}




int getMaxRepetitions(string s1, int n1, string s2, int n2)
{
if (n1 == 0)
return 0;
int indexr[s2.size() + 1] = { 0 }; // index at start of each s1 block
int countr[s2.size() + 1] = { 0 }; // count of repititions till the present s1 block
int index = 0, count = 0;
for (int i = 0; i < n1; i++) {
for (int j = 0; j < s1.size(); j++) {
if (s1[j] == s2[index])
++index;
if (index == s2.size()) {
index = 0;
++count;
}
}
countr[i] = count;
indexr[i] = index;
for (int k = 0; k < i; k++) {
if (indexr[k] == index) {
int prev_count = countr[k];
int pattern_count = (countr[i] - countr[k]) * (n1 - 1 - k) / (i - k);
int remain_count = countr[k + (n1 - 1 - k) % (i - k)] - countr[k];
return (prev_count + pattern_count + remain_count) / n2;
}
}
}
return countr[n1 - 1] / n2;
}

Leetcode 466.统计重复个数的更多相关文章
- Java实现 LeetCode 466 统计重复个数
466. 统计重复个数 定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n].例如,["abc", 3]="abcabcabc". 另一方面, ...
- shell awk统计重复个数
awk是一个很强大的工具,一个常见的用法就是统计一个文件中重复的列值的个数,这也是面试时面试官经常问的一个问题. 举个例子: 有个文件file.log的内容如下: http://www.sohu.co ...
- [Swift]LeetCode466. 统计重复个数 | Count The Repetitions
Define S = [s,n] as the string S which consists of n connected strings s. For example, ["abc&qu ...
- Excel中COUNTIFS函数统计词频个数出现次数
Excel中COUNTIFS函数统计词频个数出现次数 在Excel中经常需要实现如下需求:在某一列单元格中有不同的词语,有些词语相同,有的不同(如图1所示).需要统计Excel表格中每个词语出现的 ...
- mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行
delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...
- 第六章 第一个Linux驱动程序:统计单词个数
现在进入了实战阶段,使用统计单词个数的实例让我们了解开发和测试Linux驱动程序的完整过程.第一个Linux驱动程序是统计单词个数. 这个Linux驱动程序没有访问硬件,而是利用设备文件作为介质与应用 ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
- AC日记——统计数字字符个数 openjudge 1.7 01
01:统计数字字符个数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字符串 ...
- NOIP200107统计单词个数
NOIP200107统计单词个数 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给出一个长度不超过200的由 ...
随机推荐
- [make error ]ubuntu显示不全
make时候,输出到文件里 make >&makelog 就会自动出现一个makelog 会慢一些,不要急.
- CRC检错技术原理
一.题外话 说来惭愧,一开始是考虑写关于CRC检错技术更深层次数学原理的,然而在翻看<Basic Algebra>后,我果断放弃了这种不切实际的想法.个人觉得不是因为本人数学水平差或者能力 ...
- Python+selenium之带unittest的脚本分析
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.c ...
- Windows服务管理
按键:win+R 输入:services.msc “服务和应用程序”界面选项打开 * sc命令的使用:create(创建) delete(删除)等 * service可执行文件路径的修改:win+R ...
- HTML5中的Web Workers
https://www.cnblogs.com/yanan-boke/p/6954390.html https://segmentfault.com/a/1190000014938305 HTML5 ...
- ctrl+shift+f
ctrl+f是在当前文件寻找某个参数 ctrl+shift+f是在整个工程目录下寻找某个参数
- overloading and overriding
What is the difference between method overloading and method overriding in Java? Differences between ...
- 用简单的语言描述C++ 是什么?
用简单的语言描述C++ 是什么? 答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛.C++支持多种编程范式 --面向对象编程.泛型编程和过程化编程. 其编程领域众广,常用于系统开发,引 ...
- javaweb基础(21)_两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- 2d游戏中的射线与矩形检测碰撞
cc.exports.LineCollideRect(startLine,endLine,rect)--向量与矩形检测碰撞 --获取矩形的四个顶点位置 local p = {cc.p(rect.x,r ...