Java 一个字符串在另外一个字符串出现次数

统计一个字符串在另外一个字符串出现次数

代码如下:

package me.chunsheng.javatest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by wei_spring on 16/10/11.
 * <p>
 * 统计一个字符串在另外一个字符串出现的次数
 * 正则匹配的方法,前提字符串不是特殊字符串
 * eg:finder("adadadadauuada", "ada") 这样会统计不准确的.
 * 另外一个遍历的解决了上面那种情况.
 * 两者时间如下(纳秒为单位): 正则明显耗时,正则本就不是统计用的!!!
 * finder:3
 * finderTime:1579549
 * getCount:4
 * getCountTime:34506
 */
public class SubStringCount {

    public static void main(String[] args) {

        long current1 = System.nanoTime();
        System.out.println("finder:" + finder("adadadadauuada", "ada"));
        System.out.println("finderTime:" + (System.nanoTime() - current1));
        long current2 = System.nanoTime();
        System.out.println("getCount:" + getCount("adadadadauuada", "ada"));
        System.out.println("getCountTime:" + (System.nanoTime() - current2));

    }

    public static int getCount(String source, String sub) {
        int count = 0;
        int length = source.length() - sub.length();
        for (int i = 0; i < length; i++) {
            String sourceBak = source.substring(i, i + sub.length());
            int index = sourceBak.indexOf(sub);
            if (index != -1) {
                count++;
            }
        }
        return count;
    }

    public static int finder(String source, String regexStr) {
        String regex = "[a-zA-Z]+";
        if (regexStr != null && !regexStr.equals("")) {
            regex = regexStr;
        }
        Pattern expression = Pattern.compile(regex);
        Matcher matcher = expression.matcher(source);

        int n = 0;
        while (matcher.find()) {
            n++;
        }
        return n;
    }
}
时间: 2024-12-09 01:47:58

Java 一个字符串在另外一个字符串出现次数的相关文章

java面试题 &quot;aababcabcdabcde&quot;,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

题目:"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1) 刚开始可能对这题无从下手,现在就一步步分析 1:首先它是一个字符串,但是要对每个字符进行分析它出现的次数,那么肯定是要进行循环遍历,要进行遍历一般要么是集合,要么是数组,而在这里变成数组比较好, 2:变成数组后,我们可以用一个map集合存储字符和出现的次数也就是说key是Character,value是Integer,然后在遍历的时候拿key获取value值进行

java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符  */ public class Cto { public static void main(String[] args) {         int englishCount = 0;// 英文字母个数         int spaceCount = 0;// 空格个数         int numCoun

java集合TreeMap应用---求一个字符串中,每一个字母出现的次数

package cn.itcast.p1.map.test; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class TestMap { /** * 练习: * "fdgavcbsacdfs+++AA&&BBB" 获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b(1)...; * 思路: * 对于结果的分析发现,字母和次数之间存在

软件测试第二次作业 - 写一个Java程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。

题目一: 1. 写一个Java程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示.(单词之间用空格隔开,如“Hello World My First Unit Test”): 2. 编写单元测试进行测试: 3. 用ElcEmma查看代码覆盖率,要求覆盖率达到100%. Demo类: 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 import java.

Java TreeSet集合排序 &amp;&amp; 定义一个类实现Comparator接口,覆盖compare方法 &amp;&amp; 按照字符串长度排序

package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式

在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在"D:\java"文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 myPackage 包中创建一个YMD类,该类具有计算今年的年份.可以输出一个带有年月日的字符串的功能.设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名.年龄.出生日期.程序使用YMD的方法来计算年龄. 主要考包的运用 用到java.util.Calendar

Java练习题_Map 利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队. 历届世界杯冠军 届数 举办年份 举办地点 冠军 第一届 1930年 乌拉圭 乌拉圭 第二届 1934年 意大利 意大利 第三届 1938年 法国 意大利 第四届 1950年 巴西 乌拉圭 第五届 1954年 瑞士 西德 第六届 1958年 瑞典 巴西 第七届 1962年 智利 巴西 第八届 1966年 英格兰 英格兰 第九届 1970年 墨西哥 巴西 第十届 1974年 前西德 西德 第十一届 1978年 阿根廷 阿根廷 第

Java实现统计某字符串在另一个字符串中出现的次数

面试时会经常考这样的题目,估计也不让使用正则表达式.还好这个算法还算简单,不过在草稿纸上写难免会出现运行异常,好吧,面试官赢了,乃们屌丝就实实在在的把代码码出来吧. 下面是实现代码: /** * 统计某字符串在另一个字符串中出现的次数 * * */ public class CountHit { public static void main(String[] args) { String a = "123456abcde6ab"; String b = "6abc"

java &quot;aababcabcdabcde&quot;,获取字符串中每一个字母出现的次数

需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数 分析: * A:定义一个字符串(可以改进为键盘录入) * B:定义一个TreeMap集合 * 键:Character * 值:Integer * C:把字符串转换为字符数组 * D:遍历字符数组,得到每一个字符 * E:拿刚才得到的字符作为键到集合中去找值,看返回值 * 是null:说明该键不存在,就把该字符作为键,1作为值存储 * 不是null:说明该键存在,就把值加1,然后重写存储该键和值 * F:定义字符