通过异或快速找到不同的字符元素
来源:互联网 发布:黑客获取数据 编辑:程序博客网 时间:2024/06/05 00:53
题目来源:
点击打开链接
题目描述:
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:eExplanation:'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一下:
点击打开链接
学而时习之,不然还会在同一块石头上被绊倒两次
0 0
- 通过异或快速找到不同的字符元素
- 用异或快速找出不同的数
- 快速计算两个List的不同元素
- python 找到最大或最小的N个元素
- 通过一个数组找到每个元素对应出现的次数
- ACM编程-快速找到单个出现的元素
- 快速排序以及找到第k小的元素
- OD通过条件断点快速找到弹出对话框的位置
- 每天一道LeetCode-----找到给定序列中所有和为某个值的集合或集合个数,序列中可以有/无重复项,集合元素顺序不同算不同集合等
- 快速找出List集合的相同与不同元素集合
- 关于通过异或交换两个元素的值的一个陷阱
- 数组中除一个元素外其他所有元素出现二或三次,找到只出现一次的元素
- 通过select改变其他元素的属性或子节点
- 通过select改变其他元素的属性或子节点
- 如何通过迭代器来或得对应元素的下标
- 如何通过迭代器来或得对应元素的下标
- 通过display或visibility来隐藏html元素的区别
- 找到含有n个不同字符的子串的最大长度
- Yii 1.1使用函数updaAll方法
- 按照堆排序的方式原地进行升序排列
- jquery中的ajax方法详解
- OpenCV机器学习算法学习
- ASP.Net学习笔记015--ASP.Net中使用Cookie
- 通过异或快速找到不同的字符元素
- Hdu 1269.迷宫城堡
- 在html界面获取地址栏内传过来的值的三种方法
- JSON字符串解析
- JSON字符串解析
- Android通过EventBus进行对activity到fragment跳转的控制
- 简单商品展示案例(ListView)
- 今天开通我的博客啦~
- POJ 3744 Scout YYF I (矩阵优化的概率DP)