当前位置: 面试刷题>> 翻转字符串中的元音字母 (经典算法题500道)


### 题目描述 编写一个函数,该函数接受一个字符串作为参数,并返回一个新的字符串,其中原字符串中的所有元音字母(a, e, i, o, u,以及它们的大写形式A, E, I, O, U)都被翻转(即大写转小写,小写转大写),但字符串中的其他字符保持不变。 ### 示例 输入:`"Hello, World!"` 输出:`"hELLO, wORLD!"` ### PHP 示例代码 ```php function reverseVowels($s) { $vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']; $result = str_split($s); $length = strlen($s); $left = 0; $right = $length - 1; while ($left < $right) { if (in_array($result[$left], $vowels) && in_array($result[$right], $vowels)) { // 翻转元音字母 $result[$left] = ctype_upper($result[$left]) ? strtolower($result[$left]) : strtoupper($result[$left]); $result[$right] = ctype_upper($result[$right]) ? strtolower($result[$right]) : strtoupper($result[$right]); $left++; $right--; } elseif (!in_array($result[$left], $vowels)) { $left++; } elseif (!in_array($result[$right], $vowels)) { $right--; } } return implode('', $result); } echo reverseVowels("Hello, World!"); // 输出: hELLO, wORLD! ``` ### Python 示例代码 ```python def reverseVowels(s): vowels = 'aeiouAEIOU' s = list(s) left, right = 0, len(s) - 1 while left < right: if s[left] in vowels and s[right] in vowels: s[left], s[right] = (s[right].lower(), s[left].upper()) if s[left].isupper() else (s[right].upper(), s[left].lower()) left, right = left + 1, right - 1 elif s[left] not in vowels: left += 1 else: right -= 1 return ''.join(s) print(reverseVowels("Hello, World!")) # 输出: hELLO, wORLD! ``` ### JavaScript 示例代码 ```javascript function reverseVowels(s) { const vowels = 'aeiouAEIOU'; let arr = s.split(''); let left = 0; let right = arr.length - 1; while (left < right) { if (vowels.includes(arr[left]) && vowels.includes(arr[right])) { // 翻转元音字母 [arr[left], arr[right]] = [arr[right].toLowerCase(), arr[left].toUpperCase()]; left++; right--; } else if (!vowels.includes(arr[left])) { left++; } else { right--; } } return arr.join(''); } console.log(reverseVowels("Hello, World!")); // 输出: hELLO, wORLD! ``` **码小课**网站中有更多相关内容分享给大家学习,包括但不限于算法、数据结构、编程语言进阶等,欢迎大家访问并交流学习。
推荐面试题