给定两个字符串 s 和 t ,找不同

题意:

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

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

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

示例 1:

输入:s = “abcd”, t = “abcde”
输出:“e”
解释:‘e’ 是那个被添加的字母。

示例 2:

输入:s = “”, t = “y”
输出:“y”

提示:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • st 只包含小写字母

题目来源: https://leetcode.cn/problems/find-the-difference/description/

解题方法:

方法一:统计各个字符出现的次数,次数不一样的则为插入的字符(PHP内置函数)

function findTheDifference($s, $t) {
    // 转换成数组
    $s_arr = str_split($s);
    $t_arr = str_split($t);
    // 统计各个字符出现的次数
    $s_value_arr = array_count_values($s_arr);
    $t_value_arr = array_count_values($t_arr);
    // 次数不同的则为添加的字母
    $sss = array_diff_assoc($t_value_arr, $s_value_arr);
    return key($sss);
}

方法二:hash表辅助,原理同方法一是一样的

// hash表
function findTheDifference($s, $t) {
    $s_length = strlen($s);
    $hash = [];
    for ($i = 0; $i < $s_length; $i++){
        $char = $s[$i];
        if(!isset($char)){
            $hash[$char] = 1;
        }else{
            $hash[$char]++;
        }
    }

    for($i = 0; $i < $s_length + 1; $i++){
        $char = $t[$i];
        if(!isset($hash[$char])){
            return $char;
        }else{
            $hash[$char]--;
            if($hash[$char] == 0){
                unset($hash[$char]);
            }
        }
    }
    return key(crrent($hash));
}

方法三:ASCII计算(两个字符串ASCII总数的差值,再转换为对应的字符即可)

// ASCII计算(两个字符串ASCII总数的差值,再转换为对应的字符即可)
// 借助辅助函数 ord() — 转换字符串第一个字节为 0-255 之间的值 / chr() - 从数字生成单字节字符串
function findTheDifference($s, $t) {
    $sum = 0;
    for($i = 0; $i < strlen($t); $i++){
        $sum += ord($t[$i]);
    }
    for($i = 0; $i < strlen($s); $i++){
        $sum -= ord($s[$i]);
    }
    return chr($sum);
}

方法四:异或运算

// 异或解法()相同为0,不同为1
function findTheDifference($s, $t) {
    $ans = substr($t, -1, 1);
    $sLen = strlen($s);
    for($i = 0; $i < $sLen; $i++){
        $ans ^= substr($s, $i, 1) ^ substr($t, $i, 1);
    }
    return $ans;
}

参考:
作者:Zou Zhipeng
链接:https://leetcode.cn/problems/find-the-difference/solutions/525911/php-san-chong-jie-fa-ha-xi-biao-ascii-ji-c0il/
来源:力扣(LeetCode)

你可能感兴趣的:(PHP,算法,php,数据结构)