通过异或快速找到不同的字符元素
2017-04-24 20:21
225 查看
题目来源:
点击打开链接
题目描述:
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:
我的解决方案:
class Solution {
public:
char findTheDifference(string s, string t) {
int table[26]={0};
for(int i=0;i<s.size();++i)
{
int index= s[i] -'a';
(table[index])++;
}
for(int i=0;i<t.size();++i)
{
int index=t[i]-'a';
table[index]--;
if(table[index]==-1)
return (char)('a'+index);
}
}
};
思考:
此题其实和之前做过的single number很类似,用异或的方式其实可以很快的求解,但一时没想到,所以还是采用了笨办法完成的求解.异或计算的原理如下:
A^A=0(异或的归律)所以A^B^A=B,由题目可知要找到唯一多余的元素,只需要把全部元素依次求一遍异或计算,最后得到的结果,就是唯一多余的元素,代码如下:
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;
}
};
另外对于异或计算,这位博主的博客写的挺不错的,mark一下:
点击打开链接
学而时习之,不然还会在同一块石头上被绊倒两次
点击打开链接
题目描述:
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.
我的解决方案:
class Solution {
public:
char findTheDifference(string s, string t) {
int table[26]={0};
for(int i=0;i<s.size();++i)
{
int index= s[i] -'a';
(table[index])++;
}
for(int i=0;i<t.size();++i)
{
int index=t[i]-'a';
table[index]--;
if(table[index]==-1)
return (char)('a'+index);
}
}
};
思考:
此题其实和之前做过的single number很类似,用异或的方式其实可以很快的求解,但一时没想到,所以还是采用了笨办法完成的求解.异或计算的原理如下:
A^A=0(异或的归律)所以A^B^A=B,由题目可知要找到唯一多余的元素,只需要把全部元素依次求一遍异或计算,最后得到的结果,就是唯一多余的元素,代码如下:
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;
}
};
另外对于异或计算,这位博主的博客写的挺不错的,mark一下:
点击打开链接
学而时习之,不然还会在同一块石头上被绊倒两次
相关文章推荐
- javascript利用正则快速找出两个字符串的不同字符
- [c]如何通过结构体元素找到结构体?
- python知道字符串前后,通过通配字符来找到
- 通过PHP current函数获取未知字符键名数组第一个元素的值
- 关于通过异或交换两个元素的值的一个陷阱
- 在N个不同元素的数组A中,同时找到它的最大元素和最小元素,设A中的元素可以直接比较大小
- 通过PHP current()函数获取未知字符键名数组第一个元素的值
- 通过PHP current()函数获取未知字符键名数组第一个元素的值
- JS中比较2个字符串内元素的不同(字符1, 字符2, 分隔符可选)
- 浏览器中开发人员工具快速找到dom元素绑定那些JS事件
- Revit 二次开发之“通过连接器找到所属元素”
- 通过PHP current函数获取未知字符键名数组第一个元素的值
- [c]如何通过结构体元素找到结构体?
- 使用iframe时,在被包含的子页面(jsp)通过Jquery找到父页面中的元素
- 在win8.1中按不同条件筛选应用方便大家快速找到所需的应用
- 快速找到两个有序数组第(m+n)/2个元素
- 如何通过结构体元素找到结构体?
- OD通过条件断点快速找到弹出对话框的位置
- 关于两个List如何快速高效去除相同的元素,保留不同的元素
- oracle通过oerr快速找到相应错误代码的概述及解决方案