给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
提示:
- 0 <= s.length <= 1000
- t.length == s.length + 1
- s 和 t 只包含小写字母
解法一
class Solution {
public char findTheDifference(String s, String t) {
char[] sCh = s.toCharArray();
char[] tCh = t.toCharArray();
//排序
Arrays.sort(sCh);
Arrays.sort(tCh);
//遍历比较
for (int i = 0; i < sCh.length; i++) {
if (sCh[i] != tCh[i]) return tCh[i];
}
//因为sCh比tCh少一位,如果遍历结束还没没返回,说明是tCh的最后一个字符
return tCh[tCh.length - 1];
}
}
解法二
class Solution {
public char findTheDifference(String s, String t) {
int[] arr = new int[26];
//统计s字符串字符的个数
for (char c : s.toCharArray()) {
arr[c - 97]++;
}
//遍历t字符串的所有字符,减去arr数组中的个数
for (char c : t.toCharArray()) {
if (arr[c - 97] == 0) return c;
else arr[c - 97]--;
}
return ' ';
}
}