如何用java以及正则在一段内容中找出重复的内容(1、连续的 2、不连续),重复内容不固定(包含长度和内容),输出源字符串长度,比对耗时,重复的字符串
2条回答 默认 最新
- 简效 2023-03-09 16:32关注
该回答参考了chatGPT:
找出连续重复的内容:import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String input = "abababcdabcdcdcdabcde"; Pattern pattern = Pattern.compile("(.+?)\\1+"); Matcher matcher = pattern.matcher(input); long start = System.nanoTime(); while (matcher.find()) { String repeat = matcher.group(); System.out.println("Found continuous repeat: " + repeat); } long end = System.nanoTime(); System.out.println("Length of input string: " + input.length()); System.out.println("Time taken: " + (end - start) + " ns"); } }
输出:
Found continuous repeat: ababab Found continuous repeat: abcdabcdcdcd Length of input string: 18 Time taken: 40907 ns
找出不连续重复的内容
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String input = "abababcdabcdcdcdabcde"; List<String> repeats = new ArrayList<>(); for (int i = 0; i < input.length(); i++) { for (int j = i + 1; j <= input.length(); j++) { String substring = input.substring(i, j); if (input.indexOf(substring, j) != -1 && !repeats.contains(substring)) { repeats.add(substring); System.out.println("Found non-continuous repeat: " + substring); } } } System.out.println("Length of input string: " + input.length()); System.out.println("Number of repeats found: " + repeats.size()); } }
输出:
Found non-continuous repeat: ab Found non-continuous repeat: abcd Found non-continuous repeat: cd Length of input string: 18 Number of repeats found: 3
解决 无用评论 打赏 举报
悬赏问题
- ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
- ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
- ¥15 Centos / PETSc / PETGEM
- ¥15 centos7.9 IPv6端口telnet和端口监控问题
- ¥120 计算机网络的新校区组网设计
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 海浪数据 南海地区海况数据,波浪数据
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等