当前位置: 面试刷题>> 转换字符串 (经典算法题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 ``` **码小课**:在码小课网站中,你可以找到更多关于字符串处理、算法设计以及编程语言基础等内容的分享和学习资源,帮助你进一步提升编程能力。
推荐面试题