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 ...
随机推荐
- zabbix修改默认密码
1.mysql -u root -p 2.desc users; 3.select userid,alias,passwd from users; 4.update users set passwd= ...
- IO—》打印流&commons-IO
打印流 打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式. 打印流根据流的分类: 字节打印流 PrintStream 字符打印流 PrintWriter 方法: void print( ...
- Day15_redis安装及配置
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 redi ...
- PHP 获取图像宽度与高度
PHP 获取图像宽度函数:imagesx() imagesx() 函数用于获取图像的宽度,单位为像素,返回值为整型.高佣联盟 www.cgewang.com 语法: int imagesx( reso ...
- PHP xml_set_default_handler() 函数
定义和用法 xml_set_default_handler() 函数为 XML 解析器建立默认的数据处理器.高佣联盟 www.cgewang.com 该函数规定在只要解析器在 XML 文件中找到数据时 ...
- PHP str_getcsv() 函数
定义和用法 str_getcsv() 函数解析 CSV 格式字段的字符串,并返回一个包含所读取字段的数组. 语法 str_getcsv(string,separator,enclosure,escap ...
- Typora + PicGo-Core + Custom Command 实现上传图片到图床
教程参考 Typora+PicGo-Core(command line)+Gitee实现图片上传到图床 主要借鉴 picgo 操作命令 Typora + PicGo + Gitee 实现图片自动上传到 ...
- PyCharm2020激活破解教程
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12767075.html 免责声明:本方法只做学习研究之用,不得用于商业用途 若经 ...
- (数据科学学习手札91)在Python中妥善使用进度条
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常运行程序的过程中常常涉及到循环迭代过程,对 ...
- Scala---初探
scala语言量大特性:面向对象+函数式编程 Scala的类型 val指的是引用不可变,而不是值. 值类型 Byte Char Short Int Long Float Double 引用类型 Str ...