1. 程式人生 > 其它 >Leetcode389. 找不同

Leetcode389. 找不同

389. 找不同

給定兩個字串 st,它們只包含小寫字母。

字串 t由字串 s隨機重排,然後在隨機位置新增一個字母。

請找出在 t 中被新增的字母。

題意概述:

找出字串2在字串1的基礎上多出來的一個字母。

解題報告:

最初的想法是用map做一個對映,在字串1當中出現的字母標記為true,再對字串2的字母進行遍歷檢索,如果為false的即為答案。

但是這個做法是錯誤,根據系統給出的錯誤樣例可以發現如果一個字母重複出現多次該做法就是錯誤的,於是在原做法的基礎上做了一些修改,即將原來的bool判定改為了計數,先統計出在字串1當中出現的字母個數,再對字串2的每個字母進行遍歷,沒出現一次即在原先計數的基礎上減去該值,則map計數結果為負數的字母為最終的答案。

class Solution {
public:
    char findTheDifference(string s, string t) {
        char ans;
        map<char,int> mapp;
        for (int i=0;i<s.size();i++)
            mapp[s[i]]++;
        for (int i=0;i<t.size();i++){
            mapp[t[i]]--;
            if (mapp[t[i]]<0){
                ans=t[i];
                break;
            }
        }
        return ans;
    }
};