【发布时间】:2012-12-05 19:16:33
【问题描述】:
我正在考虑获取字符串中所有唯一重复并按长度和重复频率(数字)对它们进行排序的最佳方法
我从这段代码开始
public static void main(String[] args)
{
String s = "AAAABBBBAAAANNNNAAAABBBBNNNBBBBAAAA";
Matcher m = Pattern.compile("(\\S{2,})(?=.*?\\1)").matcher(s);
while (m.find())
{
for (int i = 1; i <= m.groupCount(); i++)
{
System.out.println(m.group(i));
}
}
}
并且想对有这样的输出提出一些建议:
AAAA 4 1,9,17,33 等等
其中 4=重复次数,1,9,17,33 个位置
感谢您的帮助
【问题讨论】:
-
使用 HashMap 将 String 映射到 List
-
HashMap<String, Set<Integer>>。String= 字符串 (AAAA),Set<Integer>是索引 (1,9,17,33)。 -
其实不需要Set——一个List就足够存储索引了。
-
当前程序输出的第一件事是
AAAABBBB。 -
但我的目标是多次重复,不仅一个 HashMap 仍然可以实现?
标签: java regex pattern-matching