本文最后更新于 2024-03-23T16:23:26+00:00
原题 :力扣《反转字符串中的元音字母》 难度 :简单
题目 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 ‘a’、’e’、’i’、’o’、’u’,且可能以大小写两种形式出现不止一次。
示例 1:
1 2 输入:s = "hello" 输出:"holle"
示例 2:
1 2 输入:s = "leetcode" 输出:"leotcede"
提示:
1 <= s.length <= 3 * 105
s 由 可打印的 ASCII 字符组成
解题 个人 关键:双指针
元音字母为 ‘a’、’e’、’i’、’o’、’u’
反转元音字母,指的是在字符串内,从左往右的第一个元音与从右往左的第一个元音进行互换
所以需要两个指针,分别左右开始循环,某一个遇到了元音,则等另一个遇到元音,都遇到后就互换,然后分别继续循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 var isYuanYin = function (s ) { const yuanyin = ["a" , "e" , "i" , "o" , "u" ]; return yuanyin.includes (s.toLowerCase ()); };var reverseVowels = function (s ) { let left = 0 ; let right = s.length - 1 ; s = s.split ("" ); while (left < right) { const leftYY = isYuanYin (s[left]); const rightYY = isYuanYin (s[right]); if (leftYY && rightYY) { const temp = s[left]; s[left] = s[right]; s[right] = temp; left++; right--; } else { if (!leftYY) left++; if (!rightYY) right--; } } return s.join ("" ); };
执行用时,消耗内存 76 ms,56.68 MB
耗时 :20 min
官方 关键:双指针 思路:跟我的一样,不赘述
总结 第一次是知道了解决算法的名称,在知道了“双指针”后,细节也就慢慢写出来了