当前位置: 面试刷题>> 找不同 (经典算法题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
```
**注意**: 上述代码示例都假设了除了第一个字符串外,其他字符串都至少有一个字符与第一个字符串不同,并直接返回了第一个发现的不同字符。在实际应用中,可能需要根据题目具体要求进行适当的调整。