当前位置: 面试刷题>> 找不同 (经典算法题500道)


题目描述

题目:找不同

给定一个字符串数组,其中每个字符串都几乎相同,只有一个字符不同。你的任务是找出这个不同的字符。

示例

输入: ["abcd", "abbd", "abcd", "abcc"] 输出: 字符 'd''c' 是不相同的字符,但根据题目,通常我们可以选择第一个不同的字符,即 'b'(假设我们比较第一个字符串和其他字符串)。但在这个特殊情况下,为了简化问题,我们假设每个字符串仅与第一个字符串有一个字符不同,并返回这个不同的字符。如果数组的第一个字符串就是不同的那个,那么返回它与其他任一字符串不同的那个字符。

注意

  • 输入数组的长度至少为2。
  • 字符串长度相同。
  • 字符串中只包含小写字母。
  • 题目假设除了一个字符外,其他字符都相同。

PHP 代码示例

function findTheDifference($strs) {
    $firstStr = $strs[0];
    $len = strlen($firstStr);
    for ($i = 0; $i < $len; $i++) {
        $char = $firstStr[$i];
        foreach ($strs as $str) {
            if ($str[$i] !== $char) {
                return $str[$i]; // 返回第一个发现的不同字符
            }
        }
    }
    // 理论上不应该执行到这里,因为题目假设了只有一个字符不同
    return '';
}

// 示例用法
$strs = ["abcd", "abbd", "abcd", "abcc"];
echo findTheDifference($strs); // 输出: b

Python 代码示例

def find_the_difference(strs):
    first_str = strs[0]
    for i in range(len(first_str)):
        char = first_str[i]
        if not all(s[i] == char for s in strs):
            return strs[1][i]  # 假设第一个字符串外的任一字符串都有不同字符

    # 理论上不应该执行到这里
    return ''

# 示例用法
strs = ["abcd", "abbd", "abcd", "abcc"]
print(find_the_difference(strs))  # 输出: b

JavaScript 代码示例

function findTheDifference(strs) {
    const firstStr = strs[0];
    for (let i = 0; i < firstStr.length; i++) {
        const char = firstStr[i];
        if (!strs.every(str => str[i] === char)) {
            return strs[1][i]; // 假设第一个字符串外的任一字符串都有不同字符
        }
    }
    // 理论上不应该执行到这里
    return '';
}

// 示例用法
const strs = ["abcd", "abbd", "abcd", "abcc"];
console.log(findTheDifference(strs)); // 输出: b

注意: 上述代码示例都假设了除了第一个字符串外,其他字符串都至少有一个字符与第一个字符串不同,并直接返回了第一个发现的不同字符。在实际应用中,可能需要根据题目具体要求进行适当的调整。

推荐面试题