题目
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input:
s = “abcd”
t = “abcde”
Output:
e
Explanation:
‘e’ is the letter that was added.
思路和代码
一开始想到的因为题目说只有小写字母,所以记录这些字母的出现,如果遍历t中的字符发现出现了不在数组记录中的字母,就返回它,代码如下。
class Solution {
public char findTheDifference(String s, String t) {
int[] count = new int[26];
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a']++;
}
for (int i = 0; i < t.length(); i++) {
if (count[t.charAt(i) - 'a'] == 0) return t.charAt(i);
count[t.charAt(i) - 'a']--;
}
return '0';
}
}
考虑char可以用对应的int表示,所以直接计算两个数组之间所有元素累加和的差值即可,如下。
class Solution {
public char findTheDifference(String s, String t) {
int count = t.charAt(t.length() - 1);
for (int i = 0; i < s.length(); i++) {
count += t.charAt(i) - s.charAt(i);
}
return (char) count;
}
}