当前位置: 面试刷题>> 转换字符串 (经典算法题500道)
**题目描述**:
请编写一个函数,该函数接收一个字符串作为输入,并将该字符串中的所有字母转换为它们对应的大写或小写形式,具体转换方式取决于当前字符的下一个字符(如果存在)。如果下一个字符是字母且为小写,则当前字符转换为大写;如果下一个字符是字母且为大写,则当前字符转换为小写;如果下一个字符不是字母或不存在,则当前字符保持原样。如果字符串为空或只包含一个字符,则直接返回原字符串。
**示例**:
- 输入:"aBcDe"
- 输出:"AbCdE"('a'后面是'B'(大写),所以'a'变成'A';'B'后面是'c'(小写),所以'B'保持'B';'c'后面是'D'(大写),所以'c'变成'C';依此类推)
**PHP 示例代码**:
```php
function transformString($str) {
$len = strlen($str);
$result = '';
for ($i = 0; $i < $len; $i++) {
$char = $str[$i];
if ($i + 1 < $len && ctype_alpha($str[$i + 1])) {
if (ctype_lower($str[$i + 1])) {
$result .= strtoupper($char);
} elseif (ctype_upper($str[$i + 1])) {
$result .= strtolower($char);
} else {
$result .= $char; // 如果下一个字符不是字母,直接添加当前字符
}
} else {
$result .= $char; // 最后一个字符或后面没有字符时,直接添加
}
}
return $result;
}
// 测试
echo transformString("aBcDe"); // 输出: AbCdE
```
**Python 示例代码**:
```python
def transform_string(s):
result = []
for i, char in enumerate(s):
if i + 1 < len(s) and char.isalpha() and s[i + 1].isalpha():
if s[i + 1].islower():
result.append(char.upper())
elif s[i + 1].isupper():
result.append(char.lower())
else:
result.append(char)
return ''.join(result)
# 测试
print(transform_string("aBcDe")) # 输出: AbCdE
```
**JavaScript 示例代码**:
```javascript
function transformString(str) {
let result = '';
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (i + 1 < str.length && /[a-zA-Z]/.test(str[i + 1])) {
if (/[a-z]/.test(str[i + 1])) {
result += char.toUpperCase();
} else if (/[A-Z]/.test(str[i + 1])) {
result += char.toLowerCase();
} else {
result += char; // 如果下一个字符不是字母,直接添加当前字符
}
} else {
result += char; // 最后一个字符或后面没有字符时,直接添加
}
}
return result;
}
// 测试
console.log(transformString("aBcDe")); // 输出: AbCdE
```
**码小课**:在码小课网站中,你可以找到更多关于字符串处理、算法设计以及编程语言基础等内容的分享和学习资源,帮助你进一步提升编程能力。