两组字符串进行比较(包含换行符),找出里面不同的字符串和不同字符串的下标。
例如
1234
56
和
1234
3456
输出
1 0 34
1表示第2行 0表示下标为0 34表示找出来的不同字符
例如
13520
5678
和
12342
3456
输出
0 1 2342
1 0 3456
import java.util.Arrays;
public class StringCompare {
public static void main(String[] args) {
// 定义两组字符串
String str1 = "1234\n56";
String str2 = "1234\n3456";
// 将字符串按行分割为字符串数组
String[] lines1 = str1.split("\n");
String[] lines2 = str2.split("\n");
// 如果字符串数组的长度不同,则输出错误信息
if (lines1.length != lines2.length) {
System.out.println("Error: the two strings have different number of lines.");
return;
}
// 遍历每一行,比较两组字符串
for (int i = 0; i < lines1.length; i++) {
String line1 = lines1[i];
String line2 = lines2[i];
// 如果两行字符串完全相同,则跳过本次循环
if (line1.equals(line2)) {
continue;
}
// 定义两个字符数组,分别存储两行字符串的每个字符
char[] chars1 = line1.toCharArray();
char[] chars2 = line2.toCharArray();
// 如果两行字符串的长度不同,则输出错误信息
if (chars1.length != chars2.length) {
System.out.println("Error: the two lines have different number of characters.");
return;
}
// 遍历每一个字符,比较两组字符串
for (int j = 0; j < chars1.length; j++) {
char c1 = chars1[j];
char c2 = chars2[j];
// 如果两个字符不同,则输出结果
if (c1 != c2) {
System.out.println(i + " " + j + " " + c1 + c2);
}
}
}
}
望采纳。