1. 题目

给定两个字符串 s 和 t,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

2. 解题

2.1 土办法,哈希map

class Solution {public:char findTheDifference(string s, string t) {unordered_map<char,int> m1;unordered_map<char,int> m2;int i;for(i = 0; i < s.size(); ++i){if(m1.find(s[i]) == m1.end())m1[s[i]] = 1;elsem1[s[i]]++;}for(i = 0; i < t.size(); ++i){if(m2.find(t[i]) == m2.end())m2[t[i]] = 1;elsem2[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;}
};

三种方法,位运算最快

LeetCode 389. 找不同(位运算)相关推荐

  1. 【LeetCode】妙用位运算解题

    [LeetCode]妙用位运算解题 文章目录 [LeetCode]妙用位运算解题 交替位二进制数★ 插入★ 数字范围按位与★★ 比特位计数★★ 下一个数★★ 消失的两个数字★★★ 修改后的最大二进制字 ...

  2. 【Leetcode -389.找不同 -392.判断子序列】

    Leetcode Leetcode -389.找不同 Leetcode -392.判断子序列 Leetcode -389.找不同 题目:给定两个字符串 s 和 t ,它们只包含小写字母. 字符串 t ...

  3. LeetCode刷题:位运算(找不同 和 只出现一次的数字)

    1.常见的位运算 按位与&:(1&1=1,1&0=0,0&1=0,0&0=0); 按位或 | : (1 | 1=1,1 | 0=1,0 | 1=1,0 | 0= ...

  4. Java实现 LeetCode 389 找不同

    389. 找不同 给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 示例: 输入: s = " ...

  5. 每日一题 20.12.18 LeetCode 389. 找不同java题解

    嚯 第一次做力扣的每日一题 题目 https://leetcode-cn.com/problems/find-the-difference/ 方法一:计数 时间复杂度:O(N),其中 N 为字符串的长 ...

  6. leetcode 461. 汉明距离(位运算)

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例:输入: x = 1, y ...

  7. 133. Leetcode 477. 汉明距离总和 (位运算-汉明距离相关题目)

    class Solution:def totalHammingDistance(self, nums: List[int]) -> int:res = 0for i in range(32):c ...

  8. 19章 位运算与进制转换

    1.进制转换 1.1整数进制转换 例:10进制转16进制 (114514)10=(BF52)16 方法:除16取余法 1.2整数进制转换例题 方法1: #include <stdio.h> ...

  9. LeetCode位运算(找出落单的数,二进制中1的个数,2的幂等)

    文章目录 位运算理论+技巧介绍 1.与 & 2.异或 ^ 3.移位及综合运用(指定位置) 4.同或 开撸 1. lc136 只出现一次的数字 2. lc137 只出现一次的数字II 3. lc ...

最新文章

  1. 【Spring】基于XML的IOC案例
  2. ACID+CAP+BASE+Transaction(事务)
  3. 51Nod:1085 背包问题
  4. [WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]
  5. linux 虚拟机不能启动不了系统,虚拟机更改linux初始启动5,出现无法启动现象
  6. vs.php在win2008+vs2008下开发调试配置
  7. python 基础 列表生成式
  8. ajax与DOM的使用,AJAX和DOM的运行经验
  9. python通用数据库连接_python 连接数据库pg
  10. 内齿轮泵行业调研报告 - 市场现状分析与发展前景预测
  11. linux环境下通过nginx实现tomcat集群
  12. mysql 5.6 TIMESTAMP
  13. 基本music matlab,求利用MUSIC算法进行DOA估计的Matlab源程序
  14. VFP控制Excel插入图表
  15. 利用ajax实现excel报表导出(解决乱码问题)
  16. Python输入自己的姓名、地址,年龄,转化为另一种格式输出
  17. 计算机开机无法选择用户界面,带有win10双系统中win10关机后开机无法进入启动菜单选择及BIOS界面的原因你知道吗?...
  18. Linux好书、经典书籍推荐
  19. 开源发票识别_自由职业者和小型企业的前4种开源发票工具
  20. Copy BOM and Rounting 说明

热门文章

  1. vs2010创建和使用动态链接库(dll)
  2. java 日期 年数_java 日期加减天数、月数、年数的计算方式
  3. c 打印 callback 函数名_Go 中的函数
  4. 金山云服务器内网带宽,金山云-文档中心-配置弹性网卡
  5. 河北软件职业技术学院计算机专业分数线,河北软件职业技术学院历年分数线 2021河北软件职业技术学院录取分数线...
  6. 驱动框架8——将驱动集成到内核中
  7. oracle取差值集合
  8. C#操作Excel(1)Excel对象模型
  9. 多态情况下,怎么用基类指针去访问基类的虚函数?
  10. 噪声控制简史,以及几个简单的声学概念