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;
    }
};
posted @ 2021-08-10 18:56  dinghao1262  阅读(30)  评论(0)    收藏  举报