题目摘要
给出两个只有小写字母的字符串s和t,t是由s中的字母随机排序并添加一个新字母得到的,找出那个新字母
解法
1. 初始化一个长度位26的整形数组,遍历(foreach)字符串s,++;再遍历字符串t,–,当–结果小于0时,返回遍历的当前的字符
public class Solution {
public char findTheDifference(String s, String t) {
int[] alpha = new int[26];
for (char c : s.toCharArray()) {
alpha[c - 'a']++;
}
for (char c : t.toCharArray()) {
if (--alpha[c - 'a'] < 0) {
return c;
}
}
return 0;
}
}
- 位操作
public class Solution {
public char findTheDifference(String s, String t) {
char c = t.charAt(t.length() - 1);
for (int i = 0; i < s.length(); i++) {
c ^= s.charAt(i);
c ^= t.charAt(i);
}
return c;
}
}
注意
* ^=java会自动转换类型,如果 char = char ^ char ^ char;
右边可能是int型,因为x ^ x = 0;
可问问题
原题
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:
eExplanation:
‘e’ is the letter that was added.