正在研究kmp算法的人。 我想知道kmp算法是否很难用正则表达式替换。 我不喜欢这个结果。 我想要的结果是0和1。 而且我想知道正则表达式的时间复杂度是否为O(n + m)。
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String t = "aaa";
Pattern p = Pattern.compile("aa");
Matcher m = p.matcher(t);
ArrayList<Integer> ans = new ArrayList<Integer>();
while (m.find()) ans.add(m.start());
for (int i : ans)
System.out.print(i + " ");
}
我想要结果[0 1] 这个结果[1]
答案 0 :(得分:0)
现在,既然我知道了你的问题, 这就是获取索引的方法。
public static void main(){
String input = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
Pattern pattern = Pattern.compile("(?=(aaa))");
Matcher matcher = pattern.matcher(input);
List<Integer> all = new ArrayList<>();
while (matcher.find()) {
all.add(matcher.start());
}
System.out.println(all);
}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
要获取数组,只需返回all
。