这是我参加8月更文应战的第31天,活动概略查看:8月更文应战
相关文章
LeetCode刷题汇总:LeetCode刷题
一、标题描绘
找不同
给定两个字符串 s 和 tleetcode是什么,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机方位添加一个字母。
请找出在 t 中被添加的字母。
从简略标题开端刷,训练自己的思维能力,为面试预备~
二、思路剖析
-
看看标题的示例,我们来理一异或门符号理这个思路~
-
示例 1:
输入:s = "abcd", t = "abcde" 输出:"e" 解说:字符数组'e' 是那个被添加的字母。
-
示例2:
输入:s = ""数组公式, t = "y" 输出:"y"
-
示例3:
输入:s = "a", t = "aa" 输出:"a"
-
示例4:
输入:s = "ae", t = "aea" 输出:"a"
-
提示:
0 <= s.length <= 1000 t.length == s.异或门符号length + 1字符数组和字符串的区别 s 和 t算法导论 只包含小写字母
-
又是找不同,,现在看到字符数组长度这种标题榜首反应就是运用hash来完结。可是!我不必!
-
静静的想起来另一种笨比办法。
-
既然第二个字符数组转字符串只比榜首个字符多一个。
-
那异或校验么我将榜首个的一切字符在第二个字符中替换掉,那么剩下的那个不就是多出来的那个了嘛!
-
哈哈哈,机制如我。
三异或门逻辑表达式、AC 代码
-
替换破解:
class So算法导论lution { public char findTheDifference(String s, String字符数组界说 t) { //将其转成字符数组,leetcode每日一题便利遍历 String[] strArr = s.split("")异或运算; for (int i=0;i&异或门逻辑表达式lt;strArr.length;i++){ //因为有或许第二个添加的字符串会重复,所以这儿运用replaceFirst只替换榜首个字符 t = t.replaceFirst(strArr[i],""); } return t.toCharAleetcode高频100题rray()[0]; } }
-
位运算破解:
-
上面的骚操作功率较低,下面就来经过异或来处理本题。
-
什么?这题还可以用异或?
-
原来是因为t只比s多了一个字母。
-
那么我们将两个字符串拼接起来,那么字符呈现奇数次leetcode官网的必定就是多了的那个字符呀!
class Solution { public char findTheDifference(Strin字符数组的输入输出g s, String t) { char res = 0; fleetcode每日一题or (char c: s.toCharArray()) { r异或es ^= c; } for (char字符数组初始化 c: t.toCharArray()) { res ^= c; } return res; } }
四、总结
- 解题算法思路千千万,不管是本办法还好,仍是奇思妙想的解法,能处理便字符数组界说是LeetCode好办法!白猫黑猫能抓老鼠的猫就是好猫!
- 这儿列几个LeetCode的其他大神的解法作为参看!
- 点击跳转:官方解法
- 点击跳转:画解算法
路漫漫其修远兮,吾必将上下求索~
假如你认为i博主写的不错!写作不易,请点赞、重视、议论给博主一个鼓动吧~hahah