繁体   English   中英

如何在字符串中找到最长的连续重复子字符串?

[英]How to find a longest consecutive repeated substring in a string?

为了解密消息,我需要首先找到密钥。 从给定的信息中,我发现键是字符串的一部分:

str =“ 251220825122082”

我们可以很容易地知道密钥应该是“ 2512208 ”,因为该密钥应该被重复用于加密消息。 但是,我尝试了许多方法,并得到了答案“ 25122082 ”,最后又添加了2个,但这只是关键的另一个开始。

我尝试过的方法:

  1. regex: String repeated = str.replaceAll("(.+?)\\\\1+", "$1");
  2. LRS Java

这两个提供相同的答案(“ 25122082 ”)。

谁能帮助我解决这个问题?

谢谢!

感谢@ajb,通过使用find()和group()解决了这个问题。

    String str = "251220825122082";
    Pattern p = Pattern.compile("(.+?)\\1+");
    Matcher m = p.matcher(str);
    while (m.find()) {
        String repeated = m.group(1);
        System.out.println(repeated);
    }

输出:2512208

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM