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


### 题目描述 **题目:找不同** 给定一个字符串数组,其中每个字符串都几乎相同,只有一个字符不同。你的任务是找出这个不同的字符。 **示例**: 输入: `["abcd", "abbd", "abcd", "abcc"]` 输出: 字符 `'d'` 和 `'c'` 是不相同的字符,但根据题目,通常我们可以选择第一个不同的字符,即 `'b'`(假设我们比较第一个字符串和其他字符串)。但在这个特殊情况下,为了简化问题,我们假设每个字符串仅与第一个字符串有一个字符不同,并返回这个不同的字符。如果数组的第一个字符串就是不同的那个,那么返回它与其他任一字符串不同的那个字符。 **注意**: - 输入数组的长度至少为2。 - 字符串长度相同。 - 字符串中只包含小写字母。 - 题目假设除了一个字符外,其他字符都相同。 ### PHP 代码示例 ```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 代码示例 ```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 代码示例 ```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 ``` **注意**: 上述代码示例都假设了除了第一个字符串外,其他字符串都至少有一个字符与第一个字符串不同,并直接返回了第一个发现的不同字符。在实际应用中,可能需要根据题目具体要求进行适当的调整。
推荐面试题