给定两个字符串 a 和 b,其长度可能相同也可能不同,请确定制作 a 和 b 字谜词所需的最小字符删除数。可以从任一字符串中删除任何字符。
这是我第一次准备竞争性编程,理解两个for循环背后的逻辑对我来说相当困难。
String str1 = s.next();
String str2 = s.next();
char []c1 = str1.toCharArray();
char []c2 = str2.toCharArray();
int []cnt1 = new int[26];
int []cnt2 = new int[26];
int len1 = str1.length();
for (int i = 0; i < len1; i++) {
cnt1[c1[i] - 97]++;
}
int len2 = str2.length();
for (int i = 0; i < len2; i++) {
cnt2[c2[i] - 97]++;
}
int cnt = 0;
for (int i = 0; i < 26; i++) {
cnt += Math.abs(cnt2[i] - cnt1[i]);
}
System.out.println(cnt);
最佳答案
此代码片段遍历每个字符串并计算每个字母在其中出现的次数(并将计数器存储在数组中以获得更好的性能)。
然后它会遍历两个计数器数组,并为每个字母减去两个字符串的计数器(绝对值)。区别在于应删除的字符的数量。将这些差异相加,结果就是答案。
关于java - 无法理解这个字谜问题解决方案背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815990/