当前位置: 首页 > 面试题库 >

如何检查整数重复序列

周和安
2023-03-14
问题内容

我有一个字母数字字符串,我想检查其中是否有整数重复的模式。而且它们应该是连续的。

  1. 12341234q我们 应该告诉我重复 1234
  2. 1234qwe1234 应该 告诉我, 1234 ,因为它不是连续重复。
  3. 12121212 应该被视为重复 12 ,因为这是第一个重复的集合。但是,如果有一种算法可以找到 1212 作为 12 之前的重复集,那么我想它必须在 1212上 再次执行这些步骤。

我以为我可以通过迭代并将其与( <= '0' && >= '9')另一个整数进行比较来存储整数部分StringBuilder。然后,我读到有关在字符串上执行FFT的知识,它显示了重复的模式。但是我不知道如何在Java中执行FFT并寻找结果,我也希望尝试这样做而不去进行信号处理。我读到有关KMP模式匹配的信息,但这仅适用于给定的输入。还有其他方法吗?


问题答案:

您可以寻求正则表达式的帮助来解决此问题。考虑这样的代码:

String arr[] = {"12341234abc", "1234foo1234", "12121212", "111111111", "1a1212b123123c12341234d1234512345"};
String regex = "(\\d+?)\\1";
Pattern p = Pattern.compile(regex);
for (String elem : arr) {
    boolean noMatchFound = true;
    Matcher matcher = p.matcher(elem);
    while (matcher.find()) {
        noMatchFound = false;
        System.out.println(elem + " got repeated: " + matcher.group(1));
    }
    if (noMatchFound) {
        System.out.println(elem + " has no repeation");
    }
}

输出:

abc12341234abc got repeated: 1234
1234foo1234 has no repeation
12121212 got repeated: 12
12121212 got repeated: 12
111111111 got repeated: 1
111111111 got repeated: 1
111111111 got repeated: 1
111111111 got repeated: 1
1a1212b123123c12341234d1234512345 got repeated: 12
1a1212b123123c12341234d1234512345 got repeated: 123
1a1212b123123c12341234d1234512345 got repeated: 1234
1a1212b123123c12341234d1234512345 got repeated: 12345

说明:

使用正则表达式的(\\d+?)\\1地方

\\d        - means a numerical digit
\\d+       - means 1 or more occurrences of a digit
\\d+?      - means reluctant (non-greedy) match of 1 OR more digits
( and )    - to group the above regex into group # 1
\\1        - means back reference to group # 1
(\\d+?)\\1 - repeat the group # 1 immediately after group # 1


 类似资料:
  • 本文向大家介绍HashSet如何检查重复相关面试题,主要包含被问及HashSet如何检查重复时的应答技巧和注意事项,需要的朋友参考一下 当你把对象加入时,HashSet会先计算对象的值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同hashcode值的对象,这时会调用方法来检查hash

  • 问题内容: 当存储一些文档时,它应该存储不存在的文档并忽略其余文档(应该在应用程序级别完成,也许检查文档的ID是否已经存在,等等?) 问题答案: 这是文档中说明的内容: 操作类型 索引操作还接受可用于强制执行创建操作的op_type,从而允许“如果不存在”行为。使用create时,如果索引中已经存在具有该ID的文档,则索引操作将失败。 这是使用op_type参数的示例: 指定create的另一个选

  • 我需要检查用户输入的内容是否正确。如果不是,我需要以msgbox的形式打印错误。 上面的代码似乎不起作用。 有什么想法吗?

  • 好吧,我知道标题真的很模糊,但我无法思考如何说出我的问题,因此我无法谷歌它;这就是我问你们的原因 基本上,我有一个接受文件输入的构造函数,并根据文件名(在我的示例中,我们使用file.txt或employees.txt)对其进行处理。现在,我不知道这是否是一个好主意,或者是否有其他方法可以实现多个重复构造函数。这是我到目前为止的代码,感谢您的帮助!:

  • 我下面有这些代码,如何检查是否为空? 如果我将,它显示此[] 如何检查数组是否为空,然后显示消息“This is empty”? 我试过了,但效果不好。即使它大于或小于0,也将始终显示“2”

  • 问题内容: 这个问题已经在这里有了答案 : 如何创建最紧凑的映射n→isprime(n)直到极限N? (31个答案) 5年前关闭。 我一直在尝试编写一个将输入数字的程序,并检查它是否是质数。如果数字实际上是质数,那么到目前为止,我编写的代码可以完美地工作。如果该数字不是质数,则它的行为很奇怪。我想知道是否有人可以告诉我代码的问题所在。 输入24时给出的结果是:不是素数不是素数不是素数素数 我将如何