Leetcode 345. Reverse Vowels of a String
阿新 • • 發佈:2018-12-15
文章作者:Tyan 部落格:noahsnail.com | CSDN | 簡書
1. Description
2. Solution
- Version 1
class 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
class 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; } };