java例题_49 计算子串出现的次数

 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 }

原文地址:https://www.cnblogs.com/scwyqin/p/12329401.html

时间: 2024-11-13 07:59:44

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

计算字符串中子串出现的次数。

/* 计算字符串中子串出现的次数. 算法:字符串最长匹配原则,以下是图解: abcabcabc abc 循环遍历母串前lenT-lenP: 循环遍历字串,用j指向子串,用k记录每一趟母串开始的位置,若p[j]==t[k]则k.j均后移 若j==子串长度lenP,则找到一个子串,次数++. */ #include<stdio.h> #include<math.h> #include<malloc.h> #include<string.h> main() { c

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

病毒侵袭持续中 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10324    Accepted Submission(s): 3633 Problem Description 小t非常感谢大家帮忙解决了他的上一个问题.然而病毒侵袭持续中.在小t的不懈努力下,他发现了网路中的“万恶之源”.这是一个庞大的病毒网站,他有着好多好多的病毒,但

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

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

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

Counter类:计算序列中出现次数最多的元素 1 from collections import Counter 2 3 c = Counter('abcdefaddffccef') 4 print('完整的Counter对象:', c) 5 6 a_times = c['a'] 7 print('元素a出现的次数:', a_times) 8 9 c_most = c.most_common(3) 10 print('出现次数最多的三个元素:', c_most) 11 12 times_dic

【Java】Float计算不准确

大家可能都遇到过,float在计算某些值时,会有不准确的情况. 比如如下情况: 计算不准确 package com.nicchagil.study.java.demo.No10float计算.No01不准确的举例; public class Call { public static void main(String[] args) { System.out.println(0.08f + 0.01f); } } 打印: 0.089999996 用BigDecimal代替计算 如果需要准确计算fl

计算子串在主串中的位置及其优化(KMP算法)

问题描述:设置一个起始位置,寻找主串中第一次出现子串的首位置. 算法实现: int index(string str,string substr,int pos) { int i=0,j=0; int slen,sslen; i=pos; slen=str.length(); sslen=substr.length(); while(i+sslen<slen) { while(j<sslen) { if(str[i+j]==substr[j]) j++; else break; } if(j=

java多线程之计算数量

package Thread.Abort; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; //计数类 class Count {//DATA priv

java通过经纬度计算两个点的之间的距离的算法

通过两个点的经纬度计算距离 从google maps的脚本里扒了段代码,没准啥时会用上.大家一块看看是怎么算的.private const double EARTH_RADIUS = 6378.137;private static double rad(double d){   return d * Math.PI / 180.0;} public static double GetDistance(double lat1, double lng1, double lat2, double ln

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

Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引. 4.int las