给定两个字符串 s 和 t ,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
s = “abcd”, t = “abcde”
“e”
解释:‘e’ 是那个被添加的字母。
public class Main{
public static void main(String[] args) {
String s = "abcd";
String t = "abcde";
System.out.println(findTheDifference(s, t));//e
}
public static char findTheDifference(String s, String t) {
//统计26个字母出现次数
int[] arr = new int[26];
//计数
for (int i = 0; i < s.length(); i++) {
arr[s.charAt(i) - 'a']++;//由于出现的都是小写字母,减去相应的ASCII码,数组下标都只会在0~25之间
}
//统计t
for (int i = 0; i < t.length(); i++) {
char c = t.charAt(i);
arr[c - 'a']--;//出现对应的下标,则计数减一
if (arr[c - 'a'] < 0) {
return c;//如果出现数组值为负数的情况,则判断为添加的元素,直接返回
}
}
return ' ';
}
}