给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
思路:把字符串中的字符当做key,出现的次数当做value,建立一个哈希表。先对s进行遍历,对key对应的value加1,然后对t进行遍历,对key对应的value减1.最后对哈希表进行遍历,如果某个key对应的value不为0,那么就返回这个key。
Java:
执行用时:4 ms, 在所有 Java 提交中击败了21.09%的用户
内存消耗:
36.8 MB, 在所有 Java 提交中击败了65.08%的用户
class Solution {
public char findTheDifference(String s, String t) {
if(s.length()==0)
{
return t.charAt(0);
}
char[]res=new char[26];
for(int i=0;i<s.length();i++)
{
res[s.charAt(i)-'a']+=1;
}
for(int j=0;j<t.length();j++)
{
res[t.charAt(j)-'a']-=1;
}
for(int i=0;i<res.length;i++)
{
if(res[i]!=0)
{
return(char)(i+'a');
}
}
return 'a';
}
}
Python
执行用时:
36 ms, 在所有 Python3 提交中击败了92.19%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了7.11%的用户
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
if len(s)==0:
return t
res=[0]*26
for i in range(0,len(s)):
res[ord(s[i])-ord('a')]+=1
for i in range(0,len(t)):
res[ord(t[i])-ord('a')]-=1
for i in range(0,len(res)):
if res[i]!=0:
return chr(i+97)
return 'a'