Leecode统计子串个数(java)
/**
- 获取一个字符串在另一个字符串中出现的次数。判断str2在str1中出现的次数
*/
public class StringExer2 {
public static void main(String[] args) {
String str1 = "ab";
String str2 = "abaaba";
getCount(str1, str2);
System.out.println("子串出现的次数为:" + count);
}
/*
* 如果发现str2中有字符与str1中字符相等,则进入内层循环
* 用str2中每一个字符去和str1的字符比较
* 如果不相等,结束内层循环
* 如果相等,判断当前子串索引是否与子串长度-1相等
* 如相等,则子串已遍历完,count+=1
* 如不等,则继续下一次内层循环
*
*
*/
static int getCount(String str1, String str2) {
str1 = "ab";
str2 = "aabjkdaaaaafjksdabkjdfsdabj";
//将字符串转换成字符数组
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
int len1 = str1.length();
int len2 = str2.length();
int count = 0;//记录出现次数
boolean loopFlag = true;//设置一个标识,用于判断是否找到匹配字符的开关
for (int i = 0; i < len2; i++) {
//用比较数组的首元素进行匹配,一旦匹配到相同的字符,开始后继的检测
if (ch1[0] == ch2[i]) {
for (int j = 0, k = i; j < len1; j++, k++) {
if (k != len2 && ch1[j] == ch2[k]) { // k != len2 是为了应对ab在aba中出现的这种状况
//比较完最后一个字符元素且相同,计数器+1
if (j == len1 - 1) {
count++;
i += len1 - 1;//用于跳过已在匹配的子字符串范围内的长度,-1是为了抵消循环的递增
loopFlag = false;
}
} else
break;//一旦发现对应位数不相等,退出检测
}
}
}
if (loopFlag) {
System.out.println("没有匹配的字符串!");
}
return count;
}
}
Leecode统计子串个数(java)的更多相关文章
- Loj 103、10043 (KMP统计子串个数)
KMP算法学习链接:https://blog.csdn.net/starstar1992/article/details/54913261/ KMP算法:可以实现复杂度为O(m+n) 为何简化了时间复 ...
- [spoj DISUBSTR]后缀数组统计不同子串个数
题目链接:https://vjudge.net/contest/70655#problem/C 后缀数组的又一神奇应用.不同子串的个数,实际上就是所有后缀的不同前缀的个数. 考虑所有的后缀按照rank ...
- Java实现 LeetCode 828 统计子串中的唯一字符(暴力+转数组)
828. 统计子串中的唯一字符 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数. 例如:s = "LEETCODE" ...
- Java实现 蓝桥杯VIP 算法训练 统计单词个数
题目描述 给出一个长度不超过200的由小写英文字母组 成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份 (1< k< =40),且每份中 ...
- Java实现 LeetCode 466 统计重复个数
466. 统计重复个数 定义由 n 个连接的字符串 s 组成字符串 S,即 S = [s,n].例如,["abc", 3]="abcabcabc". 另一方面, ...
- HDU 4622 Reincarnation (查询一段字符串的不同子串个数,后缀自动机)
Reincarnation Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)To ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
- HDU 3948 不同回文子串个数
集训队论文中有求不同子串个数的做法,就是扫一遍height数组,过程中根据height数组进行去重.对于本题也是雷同的,只是每一次不是根据与排名在上一位的LCP去重,而是与上一次统计对答案有贡献的后缀 ...
- ACdream 1430——SETI——————【后缀数组,不重叠重复子串个数】
SETI Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statist ...
随机推荐
- python的pyc文件
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言.运行时就不需要翻译,而直接执行就可以了.最典型的例子就是C语言. 解释型语言就没有这个编译的过程,而是在程序运行 ...
- Mosquitto的搭建(websocket、ssl、auth-plug)及坑点总结
Mosquitto的搭建及坑点总结 主要讲述的是eclipse-mosquitto的C语言版本的搭建,主要是为了从1.4.15版本升级到1.6.9,为解决一些webSocket和数据格式问题. 因为根 ...
- jmeter正则表达式,萌新入门篇
@@@@@@@@@@@@ 透过现象看本质 jmeter中正则表达式对我们来说,就是一个工具,他可以帮助我们做的事就是从一堆数据中截取出我们想要的字段,比如从setcookie:DERF12456DAS ...
- Python删除元组
Python删除元组: 删除元组中的某一个元素: # 删除元组中的元素 tuple_1 = ('a','b','c','d','e') # 删除第 2 个元素 tuple_1 = tuple_1[:1 ...
- Python File writelines() 方法
概述 writelines() 方法用于向文件中写入一序列的字符串.高佣联盟 www.cgewang.com 这一序列字符串可以是由迭代对象产生的,如一个字符串列表. 换行需要制定换行符 \n. 语法 ...
- PHP sizeof() 函数
实例 返回数组中元素的数目: <?php$cars=array("Volvo","BMW","Toyota");echo sizeof ...
- PHP is_callable() 函数
is_callable() 函数用于检测函数在当前环境中是否可调用.高佣联盟 www.cgewang.com is_callable() 函数验证变量的内容能否作为函数调用. 这可以检查包含有效函数名 ...
- fpdf fpdi 操作pdf文件 写入中文汉字
今天给公司做一个线上合同签约功能,用户签约后 生成pdf版的文件 .网上搜了搜大概都是用fpdf进行操作的 , 通过fpdi 可以进行读取pdf模板. 在通过继承fpdf 操作现有的pdf文档 ...
- 迷之自信的Single_User Mode
Alter database Set Single_User 对于任何DBA来说,恐怕都不陌生.在我们需要获取数据库独占访问权来做一些数据库紧急维护的时候,这可能是大多数DBA的首选,但它真的可以实现 ...
- Java课堂总结
通过重载函数,来实现对不同类型的参数运算.