题目:
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
解题思路:
在这里一般和字符有关系并且需要寻找一个字符这类问题,通常使用数组来解决比较简单。创建一个空间为26的数组来存储数组,每当取到一个字符例如‘a’,则在对应的(int)(‘a’-‘a’) 也就是第0位的数组+1,26个字母每一个字母对应一个相应的数组位置,遍历完整个字符串之后,比较两个数组的对应位置是否相应,如果不相同的那个位置的对应下标+'a'并且强转为char即可获得对应的字母。
代码如下:
class Solution {
public char findTheDifference(String s, String t) {
int[] arr1 = new int[26];
int[] arr2 = new int[26];
for(int i =0;i < s.length();i++){
arr1[(int)(s.charAt(i) - 'a')]++;
arr2[(int)(t.charAt(i) - 'a')]++;
}
arr2[(int)(t.charAt(t.length() - 1) - 'a')]++;
char temp = '0';
for(int i = 0;i < 26;i++){
if(arr1[i] != arr2[i]){
temp = (char)(i + 'a');
break;
}
}
return temp;
}
}