改进后双百 力扣 389. 找不同

389. 找不同

给定两个字符串 s 和 t,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例:

输入:

s = "abcd"
t = "abcde"

输出:

e

解释:

‘e’ 是那个被添加的字母。

思路:
读题之后,惯性思维,t 是 s 打乱之后插入一个字符的字符串,所以先排成一个顺序,找到不一样的那个字符就好了。然后是巨复杂的的一段代码。。。。

代码:

class Solution {
public:
    char findTheDifference(string s, string t) {
        vector<char>a,b;
        for (int i = 0; i < s.length(); i++)
        {
            a.push_back(s[i]);
        }
        for (int i = 0; i < t.length(); i++)
        {
            b.push_back(t[i]);
        }
        sort(a.begin(),a.end());
        sort(b.begin(),b.end());
        for (int q = 0; q < a.size(); q++)
        {
            if(a[q]!=b[q])return b[q];
        }
        return b[b.size()-1];
    }
};

反思:
提交之后发现速度垫底。。。赶紧看了看大佬们的题解,,,被自己的惯性思维蠢哭。。。
改进后代码:

class Solution {
public:
    char findTheDifference(string s, string t) {
        int sum=0;
        for (int i = 0; i < t.length(); i++)
        {
            sum+=t[i];
        }
        for (int i = 0; i < s.length(); i++)
        {
            sum-=s[i];
        }
        return (char)sum;
        
    }
};

在这里插入图片描述

哇的一声哭出来

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章