改進後雙百 力扣 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;
        
    }
};

在這裏插入圖片描述

哇的一聲哭出來

在這裏插入圖片描述

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