Leetcode 389 Find the Difference
来源:互联网 发布:JAVA年龄正则表达式 编辑:程序博客网 时间:2024/05/18 16:37
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 count1[27] = {0}; for(int i = 0; i < s.length(); i++) count1[s[i]-'a']++; for(int i = 0; i < t.length(); i++){ if(count1[t[i]-'a'] == 0) return t[i]; else count1[t[i]-'a']--; } return NULL; }};
解二
看到题目的有一个标签是bit manipulation,所以简单搜索了一下,了解到异或运算的几个特点。
1.交换律 a^b == b^a
2.结合律 (a^b)^c == a^(b^c)
3.对任意x, 都有x^x=0, x^0=x
4.自反律 a^b^b=a^0=a
所以利用这些特点,只要将两个字符串中的每个字符进行异或,就能得到多出来的那个字母。
class Solution {public: char findTheDifference(string s, string t) { int ans = 0; for(int i = 0; i < s.length(); i++) ans ^= (s[i]^t[i]); return ans^t[t.length()-1]; }};
0 0
- LeetCode 389 Find the Difference
- Leetcode 389 Find the Difference
- Leetcode 389 Find the Difference
- LeetCode[389]Find the Difference
- LeetCode 389:Find the Difference
- Leetcode 389 Find the Difference
- [LeetCode-389]Find the Difference
- Leetcode 389 Find the Difference
- leetcode-389-find the difference
- leetcode 389 Find the Difference
- Leetcode #389 Find the Difference
- Leetcode 389 Find the Difference
- LeetCode.389 Find the Difference
- Leetcode:Find the Difference
- Find the Difference --LeetCode
- LeetCode Find the Difference
- [LeetCode] Find the Difference
- [Leetcode] Find the Difference
- 【Zanuck 镇】编写php高性能snowflake算法插件(分布式64位唯一性自增id生成算法)
- 删数问题
- apache的DBUtil框架学习
- ContentProvide之手机联系人
- poj 3685(二分查找第K大的值)
- Leetcode 389 Find the Difference
- ADF 如何让给VO添加临时字段
- HTK
- 【每日视野】2016-08-30
- 在你的Android Studio中使用Kotlin
- Jsoup的使用
- 笔试题:判断一个单链表是否有环,如果有,找出环的起始位置
- suricata 3.1 源码分析5
- Java线程:概念与原理