Leetcode 345. Reverse Vowels of a String | | Leetcode 345. Reverse Vowels of a String 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 1234567891011121314151617181920212223242526272829303132333435363738class Solution {public: string reverseVowels(string s) { unordered_map<char, char> m; m['a'] = 'a'; m['e'] = 'e'; m['i'] = 'i'; m['o'] = 'o'; m['u'] = 'u'; m['A'] = 'a'; m['E'] = 'e'; m['I'] = 'i'; m['O'] = 'o'; m['U'] = 'u'; int i = 0; int j = s.length() - 1; while(i < j) { if(m.find(s[i]) == m.end()) { i++; } if(m.find(s[j]) == m.end()) { j--; } if(m.find(s[i]) != m.end() && m.find(s[j]) != m.end()) { swap(s[i], s[j]); i++; j--; } } return s; }private: void swap(char& a, char& b) { char temp = a; a = b; b = temp; }}; Version 2 12345678910111213141516171819202122232425262728293031323334class Solution {public: string reverseVowels(string s) { unordered_map<char, char> m; m['a'] = 'a'; m['e'] = 'e'; m['i'] = 'i'; m['o'] = 'o'; m['u'] = 'u'; m['A'] = 'a'; m['E'] = 'e'; m['I'] = 'i'; m['O'] = 'o'; m['U'] = 'u'; int i = 0; int j = s.length() - 1; while(i < j) { while(i < j && m.find(s[i]) == m.end()) { i++; } while(i < j && m.find(s[j]) == m.end()) { j--; } swap(s[i++], s[j--]); } return s; }private: void swap(char& a, char& b) { char temp = a; a = b; b = temp; }}; Reference https://leetcode.com/problems/reverse-vowels-of-a-string/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏