提问人:Varun A M 提问时间:8/14/2023 更新时间:8/14/2023 访问量:59
在 Java 或 Kotlin 中,有哪些方法可以找到两个字符串之间的确切区别?
What are the ways to find the exact difference between two strings in Java or Kotlin?
问:
我想与字符串进行比较并打印差异。我还想打印两个字符串之间的相似度百分比。我正在寻找 Java 或 Kotlin 的解决方案。任何潜在客户将不胜感激。
这是问题的示例。
- 假设第一个字符串是“Java is very easy”
- 第二个字符串是“Jav is ver easie”
现在,我想以编程方式发现“Java”中缺少字母 a,而 easy 是不同的。我想直观地让读者知道他们犯了错误的字母。
我基本上是在为 android 应用程序寻找这个。任何潜在客户将不胜感激。
答:
0赞
YACINE EL GOUB
8/14/2023
#1
如果您想了解两个字符串的字符之间的确切差异,可以使用自己的字符串修改以下代码中的“str1”和“str2”。
public static void compareChar() {
String str1 = "i hate java so match";
String str2 = "i hate java so match";
char[] charStr1 = str1.toCharArray();
char[] charStr2 = str2.toCharArray();
System.out.println("position str1 str2");
if (charStr1.length > charStr2.length) {
for (int i = 0; i < charStr2.length; i++) {
if (charStr1[i] != charStr2[i]) {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Different");
} else {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Not Different");
}
}
for (int i = charStr2.length; i < charStr1.length; i++) {
System.out.println(i + " " + charStr1[i] + " " + " Different");
}
} else if (charStr1.length < charStr2.length) {
for (int i = 0; i < charStr1.length; i++) {
if (charStr1[i] != charStr2[i]) {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Different");
} else {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Not Different");
}
}
for (int i = charStr1.length; i < charStr2.length; i++) {
System.out.println(i + " " + charStr2[i] + " " + " Different");
}
} else {
for (int i = 0; i < charStr1.length; i++) {
if (charStr1[i] != charStr2[i]) {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Different");
} else {
System.out.println(i + " " + charStr1[i] + " " + charStr1[i] + " Not Different");
}
}
}
}
评论
1赞
Gabe Sechan
8/14/2023
这对于几乎相同且转置的字符串有效(将一个字母替换为另一个字母),但对于缺少字母、添加的字母或多字母错误不是很有效。它在单词级别上也根本不起作用(整个缺失的单词,但之后会恢复到相似性)。在它找到第一个错误后,如果它是丢失或添加的字母,之后的每个字母也会标记为错误。你的答案没有错,但它是算法的最简单版本,以至于在实践中几乎无法使用。
评论