Find the Difference

来源:互联网 发布:淘宝上有二手市场吗 编辑:程序博客网 时间:2024/06/06 07:37

问题描述:Find the Difference

Given two strings s and t which consist of only lowercase letters.

String t is generated by random shuffling string s and then add one more letter at a random position.

Find the letter that was added in t.

Example:

Input:
s = “abcd”
t = “abcde”

Output:
e

Explanation:
‘e’ is the letter that was added.

思路:第一次我用的是c++中的set来实现这个功能,因为set可以通过逻辑操作来求差集,然后又可以通过之前的异或操作来实现求两个集合中不同的部分,不过这个方法限制在只能求一个字符,正好这个题目满足。

代码:

#include<queue>#include<set>using namespace std;char findTheDifference(string s, string t) {        set<char> setS,setT;        char res;        for(int i=0;i<sizeof(t);i++){             setT.insert(t[i]);        }        for(int i=0;i<sizeof(s);i++){             setS.insert(s[i]);        }        set<char>::iterator it = setT.begin();        while(it != setT.end()){             if(setS.find(*it) == setS.end()) res = *it;             it++;        }        return res;    }int main(){    string s="abcdkt";    string t="abcdekt";    cout<<findTheDifference(s,t)<<endl;}
class Solution {public:    char findTheDifference(string s, string t) {        char r=0;        for(char c:s) r ^=c;        for(char c:t) r ^=c;        return r;    }};

复杂度:第一种算法复杂度是O(n),第二种算法复杂度是O(1).

原创粉丝点击