389. 找不同

    xiaoxiao2023-09-29  154

    题目描述:

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

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

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

    示例:

    输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。

    算法1:

     行排序,然后遍历比较每个字符

    class Solution { public: char findTheDifference(string s, string t) { sort(s.begin(), s.end()); sort(t.begin(), t.end()); for(int i=0; i<s.size(); i++) { if(s[i] == t[i]) continue; else return t[i]; } return t[t.size()-1]; } };

    算法2:

    运用位运算,两个同样的值异或的结果为 0。对两个字符串中的所有字符进行异或,得到的结果就是被添加的字符。 class Solution { public: char findTheDifference(string s, string t) { char a = 0; for(int i = 0; i<s.size(); i++) { a ^= s[i]; } for(int j = 0; j<t.size(); j++) { a ^= t[j]; } return a; } };

    最新回复(0)