【发布时间】:2017-06-12 17:06:50
【问题描述】:
我正在编写一个简单的程序来计算一个序列在字符串中出现的次数。
案例一:
给定字符串: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);
}
}
我的程序在第 1 种情况下工作。它在第 2 种情况下失败,因为s.split(sequence) 删除了两个 'EAT',留下一个大小为 0 的数组。
有没有办法解决这个问题?
【问题讨论】:
-
不要使用String#split,而是自己循环解析String。
-
一个不错的 indexOf 循环
-
重叠匹配怎么办?比如你在“EEE”中搜索“EE”,是2还是3?
-
@shmosel 是 1
-
糟糕,我的意思是 1 或 2。
标签: java arrays string split count