0

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

str = "251220825122082"

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

我试过的方法:

  1. 正则表达式:String repeated = str.replaceAll("(.+?)\\1+", "$1");
  2. LRS Java

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

谁能帮我解决这个问题?

谢谢!

4

1 回答 1

0

感谢@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

于 2017-01-16T04:45:20.110 回答