本人是刚开始刷LeetCode的小白,写下这篇文章主要是记录自己的刷题过程的一些理解,还望各位大佬多多指教。
389 找不同给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例 1:
输入:s = "abcd", t = "abcde" 输出:"e" 解释:'e' 是那个被添加的字母。
示例 2:
输入:s = "", t = "y" 输出:"y"
示例 3:
输入:s = "a", t = "aa" 输出:"a"解1 数组
因为输入的两个字符串都是是小写字母,因此设置一个大小为26的数组table。分别遍历传入的两个字符串s与t,遍历s字符串时,把s中的字符转换为ASCII码并减去字符a的ASCII码,得到的结果可以作为table的索引,遍历t也是一样。在遍历的过程中,将s中的字符记为-1,t中的字符记为+1,分别存入table数组。最后遍历table数组,当s与t中的字符一致时(每种字符个数一样),数组中存入的数据为0,如果不是0,则对应索引的数据+a的ASCII码即为不同值。
public char findTheDifference(String s, String t) {
int sizeS = s.length();
int sizeT = t.length();
if(sizeS == 0){ //如果s中没有元素,t中第一个元素就是多出来的
return t.charAt(0);
}
int[] table = new int[26];
for(int i = 0; i
解2
求和
将s和t中每个字符的ASCII码求和分别得到As,At;At-As对应的字符即被添加的字符。
public char findTheDifference(String s, String t)
{
int sum1 = 0,sum2 = 0;
for (int i = 0; i
复杂度分析
- 时间复杂度:O(N)
- 空间复杂度:O(1)



