如何返回字符串中连续点出现的最大数量?

时间:2013-10-01 19:57:58

标签: java java.util.scanner

解析字符串时,我们总是使用StringTokenizersplit方法来解析字符串: , 要么 。 要么 :

等等,

我的问题是我有一个文字文件,其中包含如下字符和点: CTA ... cc.tt..at TA ..... tct.c.t。

我的问题是解析这个文本文件并返回最大出现的点数,例如上面的文本文件应该返回:5

3 个答案:

答案 0 :(得分:2)

使用正则表达式模式"(\\.+)",然后您可以检查捕获的组的长度。

查看java.util.regex.PatternMatcher

的Java正则表达式文档

答案 1 :(得分:2)

在ct_的原始答案的基础上,如果文件不是太大,你可以将它作为一个字符串加载并让String.split通过分割每一串非点来提取点,即[^.]+

"cta...cc.tt..at ta.....tct.c.t.".split("[^.]+") =>
   { "", "...", ".", "..", ".....", ".", ".", "." }

然后获得最长字符串的长度是微不足道的。

int longestCount = 0;
for (String dots : text.split("[^.]+")) {
    if (dots.length() > longestCount) {
        longestCount = dots.length();
    }
}

答案 2 :(得分:0)

您可以使用String.split而不是StringTokenizer(不推荐使用),并提供与一个或多个点匹配的正则表达式。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)