Java实现:运用字符串模式匹配算法,编程实现查重关键技术系统。创建两个文件,文件使用屏幕输入的方式写入字符串进入文件,通过分解和比较,找出两个文件中所输入字符串相重复的字段或语句,输出重复字段和在两个文件中所处的位置,功能要求: 词语查重 语句查重 位置标注 重复率统计
时间: 2024-02-22 13:58:13 浏览: 22
以下是Java代码示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StringMatch {
public static void main(String[] args) {
// 读入两个文件的字符串内容
String[] file1 = readStringsFromFile();
String[] file2 = readStringsFromFile();
// 词语查重
List<String> repeatedWords = new ArrayList<>();
for (String s1 : file1) {
for (String s2 : file2) {
if (s1.equals(s2)) {
repeatedWords.add(s1);
}
}
}
// 语句查重
List<String> repeatedSentences = new ArrayList<>();
for (String s1 : file1) {
for (String s2 : file2) {
if (s1.contains(s2) || s2.contains(s1)) {
repeatedSentences.add(s1);
repeatedSentences.add(s2);
}
}
}
// 输出重复字段和在两个文件中所处的位置,以及重复率
System.out.println("重复的词语:");
for (String word : repeatedWords) {
System.out.println(word);
}
System.out.println("\n重复的语句:");
for (String sentence : repeatedSentences) {
System.out.println(sentence);
}
System.out.printf("\n重复率: %.2f%%\n", (double) (repeatedWords.size() + repeatedSentences.size()) /
(file1.length + file2.length) * 100);
}
// 从屏幕输入读入字符串数组
public static String[] readStringsFromFile() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符串: ");
String input = scanner.nextLine();
return input.split("\\s+");
}
}
```
注意:这里实现的是暴力查找算法,如果输入的字符串较长,运行时间可能会很长。可以考虑使用其他更高效的算法,如KMP算法、Boyer-Moore算法等。