1 /*49 【程序 49 子串出现的个数】
2 题目:计算字符串中子串出现的次数
3 */
4
5 /*分析
6 * 1、子串的出现是有标志的,如" ",*,#或者其他
7 * 2、统计子串的出现的次数只需要抓住关键标志
8 * 3、怎么判断关键字一定是子串,一个子串可能有多个关键字
9 * */
10 /*====================两种方法====================
11 * 方法一:使用String类的substring(indexStart,indexEnd)方法
12 * str.substring(indexStart,indexEnd)表示:
13 * 截取方法调用者(即str)的从indexStart到indexEnd
14 * (包括indexStart,不包括indexEnd;即含头不含尾、或左闭右开区间内的子字符串)
15 * 1、count用来接收子字符串substr在字符串str中出现的次数
16 * 2、使用for循环从字符串的0位置开始循环截取和子字符串长度相同的字符串;
17 * 3、然后判断截取的字符串是否和子字符串substr相同,若相同则count加一。
18 * 原理:利用for循环遍里所有符合子串长度的子串,如果相同,则count++
19 * 方法二:使用使用String类的indexOf()方法
20 * 1、indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
21 * 2、indexOf(String str, int index): 返回从 index 位置开始查找指定字符str在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
22 * 原理:找到第一次出现子串的位置,count++,第二次以此为起始,再找到第一次出现子串的位置,count++。。。重复之前的操作,直到字符串全部查找完毕
23 * */
24
25 package homework;
26
27 public class _49 {
28
29 public static void main(String[] args) {
30 //声明字符串
31 String str="wangyongqinwangyongqinwangyongqinwangyongqin";
32 //子串
33 String str_son="wang";
34 System.out.println("子串共出现了:"+Counter_2(str, str_son)+"次");
35 }
36
37 // //子串出现次数统计的函数(方法一)
38 // private static int Counter_1(String str,String str_son) {
39 // //计数器
40 // int counter=0;
41 //
42 // return counter;
43 //
44 // }
45
46
47 //子串出现次数统计的函数(方法二)
48 private static int Counter_2(String str,String str_son) {
49 //计数器
50 int counter=0;
51 //从字符串起始位置开始查找
52 int i=0;
53 //开始查找
54 while(str.indexOf(str_son,i)!=-1){ //不等于-1意味着查找到了子串
55 counter++; //找到子串就加1
56 i=str.indexOf(str_son,i)+str_son.length(); //从查到的子串结束后开始继续查找(indexOf返回的是查找到的子串的起始位置)
57 // System.err.println(str.indexOf(str_son,i)+" "+i+" "+str_son.length());//测试
58 }
59 return counter;
60 }
61
62 }

java例题_49 计算子串出现的次数的更多相关文章

  1. 【转】计算Java List中的重复项出现次数

    本文演示如何使用Collections.frequency和Map来计算重复项出现的次数.(Collections.frequency在JDK 1.5版本以后支持) package com.qiyad ...

  2. hdu 3065 AC自动机(各子串出现的次数)

    病毒侵袭持续中 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. Java基础-时间复杂度计算方式

    Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...

  4. 计算数字出现的次数 Exercise07_03

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:计算数字出现的次数 * */ public class Exercise0 ...

  5. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  6. 【Java】Float计算不准确

    大家可能都遇到过,float在计算某些值时,会有不准确的情况. 比如如下情况: > 计算不准确 package com.nicchagil.study.java.demo.No10float计算 ...

  7. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

  8. Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

  9. python之Counter类:计算序列中出现次数最多的元素

    Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...

随机推荐

  1. Code Book All In One

    Code Book All In One Jupyter Notebook Jupyter Lab https://jupyter.org/ Storybook https://storybook.j ...

  2. 如何给 GitHub 添加 SSH key, 如何生成 SSH key 详细图文教程!

    如何给 GitHub 添加  SSH key, 如何生成  SSH key 详细图文教程! 一. 生成  SSH key https://ide.c9.io/xgqfrms/ 创建一个空项目:(或使用 ...

  3. cnblogs 日期错乱 bug

    cnblogs 日期错乱 bug 时间错乱 bug archive/2004/01/13/ 什么鬼 呀默认时间戳 https://www.cnblogs.com/xgqfrms/archive/200 ...

  4. VAST维萨币二月发行,高倍币重现江湖!

    市场长期的历史经验表明,经营盈利能力最好的企业,经常是那些现在的经营方式与5年前甚至10年前几乎完全相同的企业.这个经营模式放到币圈也是一样的,2020年的挖矿是最火的,这个模式现在在市场也同样受用. ...

  5. NGK Global伦敦路演:“区块链+能源”必将推动世界性能源革命

    随着区块链技术的发展和应用的不断完善深入,市场的热情也开始活跃高涨,在万众期待下,NGK Global在英国伦敦的路演于7月25日圆满举办. 此次伦敦路演会议中众多行业精英,各社区代表.星盟投资公司资 ...

  6. Python安装教程

    1.下载好Python安装包后,双击打开(第一个是32位,第二个是64位,根据自己电脑位数进行选择): 2.打开后如下,先将下方的Python添加到系统环境变量勾选上,再点击第一个默认安装即可: 3. ...

  7. MySQL 导出 select 结果集

    reference: https://blog.csdn.net/huaishuming/article/details/74762652法一:SELECT * from jc_archives wh ...

  8. Docker安装Openvas

    目录 安装 在本机内运行 在局域网内运行 关闭 参考 安装 ➜ ~ docker search openvas NAME DESCRIPTION STARS OFFICIAL AUTOMATED mi ...

  9. 《C++ Primer》笔记 第8章 IO库

    iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型. 标准库使我们能忽略这些不同类型的流之间的差异,这是通过继承机制 ...

  10. 快速电路仿真器(FastSPICE)中的高性能矩阵向量运算实现

    今年10-11月份参加了EDA2020(第二届)集成电路EDA设计精英挑战赛,通过了初赛,并参加了总决赛,最后拿了一个三等奖,虽然成绩不是很好,但是想把自己做的分享一下,我所做的题目是概伦电子出的F题 ...