Java:计算字符串中序列的频率

标签 java arrays string split count

我正在编写一个简单的程序,用于计算序列在字符串中出现的次数。

案例1:

给定字符串:EATNEATMMMMEAT

给定序列:EAT

程序应返回值 3。

案例2:

给定字符串:EATEAT

给定序列:EAT

程序应该返回 2。

import java.util.*;
public class FrequencyOfSequence { //Finds the frequency of a sequence in a string s
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String sequence = in.nextLine();
        String[] cArr = s.split(sequence);

        System.out.println(cArr.length); 

    }
}

我的程序在第一种情况下可以工作。在第二种情况下它会失败,因为 s.split(sequence) 删除了两个“EAT”,留下了一个大小为 0 的数组。

有办法解决这个问题吗?

最佳答案

为此使用正则表达式:

Pattern pattern = Pattern.compile(sequence);
Matcher  matcher = pattern.matcher(s);

int count = 0;
while (matcher.find())
    count++;

System.out.println(count);

关于Java:计算字符串中序列的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886824/

相关文章:

java - 如何将 @ManyToMany 与同一个表上的两个列表一起使用

python - numpy,获取最大的子集

java - 字符串池中将创建多少个对象?

c - C 中分割字符串最快的算法?

java - 将 DefaultTableModel 数据复制到剪贴板

java - optstring 未转换为字符串 [aws json 对象]

C# 将数组类型的对象转换为 T,其中 T 是数组?

javascript - 在 Angular 中显示数组内部的对象

c++ - 在 char 数组中查找出现次数最多的字符

java - SwingWorker的execute()方法似乎没有做任何事情