LeetCode 389. 找不同(位运算)
发布日期:2021-07-01 03:15:36
浏览次数:2
分类:技术文章
本文共 1328 字,大约阅读时间需要 4 分钟。
1. 题目
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
2. 解题
2.1 土办法,哈希map
class Solution { public: char findTheDifference(string s, string t) { unordered_mapm1; unordered_map m2; int i; for(i = 0; i < s.size(); ++i) { if(m1.find(s[i]) == m1.end()) m1[s[i]] = 1; else m1[s[i]]++; } for(i = 0; i < t.size(); ++i) { if(m2.find(t[i]) == m2.end()) m2[t[i]] = 1; else m2[t[i]]++; } for(auto it = m2.begin(); it != m2.end(); ++it) { auto iter = m1.find(it->first); if(iter == m1.end() || (iter != m1.end() && iter->second != it->second)) return it->first; } return 'a'; }};
2.2 位运算 ^ 异或
- 两字符串的所有字符 全部异或
class Solution { public: char findTheDifference(string s, string t) { int i; char ch = 0; for(i = 0; i < s.size(); ++i) ch ^= s[i]^t[i]; ch ^= t[i]; return ch; }};
2.3 两字符串分别求和做差
class Solution { public: char findTheDifference(string s, string t) { int i,sum = 0; for(i = 0; i < s.size(); ++i) sum += t[i]-s[i]; sum += t[i]; return (char)sum; }};
三种方法,位运算最快
转载地址:https://michael.blog.csdn.net/article/details/101165255 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月21日 17时01分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
page、request、session和application
2019-05-04
代理模式和装饰模式
2019-05-04
辗转相除求最大公约数原理
2019-05-04
与Integer和int有关的一个题目分析
2019-05-04
各种排序算法总结
2019-05-04
equals 和 ==
2019-05-04
String, StringBuffer和StringBuilder
2019-05-04
HashMap,HashTable,CurrentHashMap和HashSet的介绍
2019-05-04
pta 一元多项式的乘法与加法运算
2019-05-04
单例模式
2019-05-04
蓝桥杯 算法训练 未名湖边的烦恼
2019-05-04
pta 哥尼斯堡的“七桥问题”
2019-05-04
pta 是否完全二叉搜索树
2019-05-04
pta 是否同一棵二叉搜索树
2019-05-04
在浏览器输入一个网址到得到页面的过程
2019-05-04
JAVA 实现全排列和组合
2019-05-04
mybatis在查询时使用count(*),total为1,结果为0
2019-05-04
spring事务 @Transactional
2019-05-04
工场模式和策略模式
2019-05-04