第389题---Find the Difference

  • 题意描述
    • 给定两个字符串,其中一个字符串是由另外一个字符串的字符随机打乱,增加一个字符生成

  • 思路一(错误思路)
    • 理解错题意,以为是顺序判断

  • 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Solution {
    public:
    char findTheDifference(string s, string t) {
    for(int i = 0; i < min(s.size(), t.size()); ++i) {
    // first : abecd---abcd
    // second: abc---abe(impossible)
    if(s[i] != t[i]) {
    if(s[i] != t[i+1]) {
    return s[i];
    } else {
    return t[i];
    }
    }
    }
    return s.size() > t.size() ? s[s.size()-1] : t[t.size()-1];
    }
    };


  • 思路二
    • map统计字符出现的次数,不同的返回

  • 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class Solution {
    public:
    char findTheDifference(string s, string t) {
    char result;
    vector<int> vecs(26, 0);
    vector<int> vect(26, 0);
    for(int i = 0; i < s.size(); ++i) {
    vecs[s[i] - 'a'] ++;
    }
    for(int i = 0; i < t.size(); ++i) {
    vect[t[i] - 'a'] ++;
    }
    for(int i = 0; i < 26; ++i) {
    if(vecs[i] != vect[i])
    result = static_cast<char>('a' + i);
    }
    return result;
    }
    };
坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章