389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例 1:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
难度:简单 题目地址:https://leetcode-cn.com/problems/find-the-difference/
1、C语言代码:
char findTheDifference(char * s, char * t){
int ss = 0 , tt = 0;
for(int i = 0;s[i] != '\0';i++){
ss += s[i]; //求字符串s的ASCII和
}
for(int j = 0;t[j] != '\0';j++){
tt += t[j]; //求字符串t的ASCII和
}
return (tt - ss);
}
解释: 分别求2个字符串的ASCII码值的和,差值即为被添加的字母。
知识点回顾: 无。
2、Java代码:
class Solution {
public static char findTheDifference(String s, String t) {
int result = 0;
for (Character c : s.toCharArray()) {
result^=c;
}
for (Character c : t.toCharArray()) {
result^=c;
}
return (char)result;
}
}
解释: 运用位运算,两个同样的值异或的结果为 0。对两个字符串中的所有字符进行异或,得到的结果就是被添加的字符。
知识点回顾:
1、Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值。
2、toCharArray() 方法将字符串转换为字符数组。
3、Python代码:
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
for i in s:
t = t.replace(i,'',1)
return t
解释: 遍历一遍s,对s中的每一个字符,用replace函数在t中找到并删除,返回t,replace() 第三个参数代表最大替换次数。
知识点回顾:
1、replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
语法:str.replace(old, new[, max])
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次。
返回值:返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。
4、JavaScript代码:
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function(s, t) {
for(let item of s){
t = t.replace(item, '')
}
return t
};
解释: 类似于Python的求解思路。
知识点回顾:
1、replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法:string.replace(searchvalue,newvalue)
searchvalue:必须。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
newvalue:必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。