leetcode刷题记录之389

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 的第一次匹配或所有匹配之后得到的。

你可能感兴趣的:(算法刷题)