Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 389. 找不同(位运算)

LeetCode 389. 找不同(位运算)

作者头像
Michael阿明
发布于 2020-07-13 07:12:02
发布于 2020-07-13 07:12:02
30400
代码可运行
举报
运行总次数:0
代码可运行

1. 题目

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

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

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

2. 解题

2.1 土办法,哈希map

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
        	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 位运算 ^ 异或

  • 两字符串的所有字符 全部异或
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 两字符串分别求和做差

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
    }
};

三种方法,位运算最快

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 找不同(位运算)(哈希表)
给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。
SakuraTears
2022/01/13
2900
Isomorphic Strings
1. Description 2. Solution class Solution { public: bool isIsomorphic(string s, string t) {
Tyan
2019/05/25
4820
[LeetCode]巧用位运算
在编程过程中,位运算是常用的运算之一,直接对二进制位操作使得位运算比一般的操作指令更加高效。巧用位运算,可以解决一些其他运算符号难以解决或者用其他方法解决起来更加复杂的问题。
用户6557940
2022/07/24
3410
[LeetCode]巧用位运算
LeetCode 187. 重复的DNA序列(哈希/位运算)
所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。 在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
Michael阿明
2020/07/13
5960
7-3 电话聊天狂人 (25 分)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
韩旭051
2019/11/08
9410
C++【初识哈希】
哈希(Hash)是一个广泛的概念,其中包括哈希表、哈希冲突、哈希函数等,核心为 元素(键值) 与 存储位置(哈希值) 之间的映射关系,哈希值 可以通过各种哈希函数进行计算,需要尽量确保 “唯一性”,避免冲突,除此之外,哈希函数还可用于 区块链 中,计算 区块头(Head)中的信息,本文将带你认识哈希,学习其中的各种知识
北 海
2023/07/09
3680
C++【初识哈希】
leetcode-389-Find the Difference
题目描述: Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s (随机打乱字符串s)and then add one more letter at a random position. Find the letter that was added in t. Example: Input: s = "abcd" t = "ab
chenjx85
2018/05/21
7470
Leetcode 290. Word Pattern
版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/82594572
Tyan
2019/05/25
3480
搞定大厂算法面试之leetcode精讲9.位运算
程序中所有的数载计算机内存中都是以二进制存储的,位运算就是直接对整数在内存中的二进制进行操作,由于直接在内存中进行操作,不需要转成十进制,因此处理速度非常快
全栈潇晨
2021/11/29
3690
LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
3660
LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)
LeetCode刷题记录
我只会用暴力解法,看了题解才知道哈希表可以这样用,屌!就,用一个表存入数据和索引,遍历这个表一次,如果 target 减去当前元素的值在哈希表里面的话可以直接返回索引,就不需要双重循环遍历了。更牛逼的做法是变将数据和索引存入哈希表边检查有没有存在,有的话可以不用将剩下的数据存完就返回了。
棒棒鸡不棒
2022/09/02
4140
LeetCode刷题记录
LeetCode 820. 单词的压缩编码(后缀树)
例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。
Michael阿明
2020/07/13
8450
开发成长之路(11)-- STL常用函数大集合
再好的编程技巧,也无法让一个笨拙的算法起死回生。 ---- 特定的算法往往搭配特定的数据结构。换言之,特定的数据结构是为了实现某种特定的算法。 ---- 文章目录 vector 部分 list部分 map/multimap set/multiset unordered_set/unordered_multiset unordered_map/unordered_multimap string 其他 ---- vector 部分 #include <vector> vector<int> v
看、未来
2021/09/18
3110
Leetcode | 第C节:字符串综合题(2)
东京奥运会圆满收官!当然我自己也将迎来留学前的最后准备,所以更新速度可能还是会比较慢……但还好,大部分的内容都已经在之前写的差不多了,也希望最后这几篇我也能够尽快更完,当然也希望大家可以谅解~
学弱猹
2021/09/07
7630
Leetcode 389. Find the Difference
版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/82353038
Tyan
2019/05/25
3120
【算法刷题指南】滑动窗口
南桥
2024/11/16
1080
深度解析算法之位运算
<< 左移操作符 > >右移操作符号 ~取反 &按位与:有0就是0 |按位或:有1就是1 ^按位异或:相同为0,不用的话就是1 /无进位相加
Undoom
2025/04/22
1930
深度解析算法之位运算
Leetcode: Repeated DNA Sequences
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
卡尔曼和玻尔兹曼谁曼
2019/01/22
5970
LeetCode热题100(滑动窗口篇)
这种子串子数组问题,而且还满足窗口的右边界右移动就是加,左边界右移就是减的问题大概率就是滑动窗口。
Yui_
2025/01/17
1450
LeetCode热题100(滑动窗口篇)
leetcode每日一题:389. 找不同
https://leetcode-cn.com/problems/find-the-difference
用户3578099
2020/12/30
4710
相关推荐
LeetCode 找不同(位运算)(哈希表)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验