LeetCode 345. Reverse Vowels of a String

Posted 浩然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 345. Reverse Vowels of a String相关的知识,希望对你有一定的参考价值。

https://leetcode.com/problems/reverse-vowels-of-a-string/

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:
Given s = "hello", return "holle".

Example 2:
Given s = "leetcode", return "leotcede".

两个指针,查找交换字符。一开始忘记在SWAP之后,移动指针了,导致死循环。。。新学到一个string::npos indicates no matches。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Solution {
 5 public:
 6 /*
 7     bool isVowels(char chIn)
 8     {
 9         return ((toupper(chIn) == \'A\' || toupper(chIn) == \'E\' || toupper(chIn) == \'I\' || toupper(chIn) == \'O\' || toupper(chIn) == \'U\'));
10     }
11 */
12     
13     string reverseVowels(string s) {
14         int i = 0, j = s.length() - 1;
15         string sVowels = "aeiouAEIOU";
16 
17         // Remember special case
18         if (s == "" || s.length() == 0) return s;
19         
20         while (i < j)
21         {
22 //            while (!isVowels(s[i]) && (i < j)) i ++;
23               while ((sVowels.find(s[i]) == string::npos) && (i < j)) i ++;
24 //            while (!isVowels(s[j]) && (i < j)) j --;
25               while ((sVowels.find(s[j]) == string::npos) && (i < j)) j --;  
26                         
27             if (i < j)
28                 swap(s[i], s[j]);
29             
30             i ++;
31             j --;
32         }
33 
34         return s;
35     }
36 };
37 
38 int main ()
39 {
40     Solution testSolution;
41     string result;
42     
43     result = testSolution.reverseVowels("hello");    
44     cout << result << endl;
45     
46     char ch;
47     cin >> ch;
48     
49     return 0;
50 }
View Code

string::find - C++ Reference

http://www.cplusplus.com/reference/string/string/find/

string::npos - C++ Reference

http://www.cplusplus.com/reference/string/string/npos/

 

以上是关于LeetCode 345. Reverse Vowels of a String的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode #345 Reverse Vowels of a String

LeetCode 345. Reverse Vowels of a String

Leetcode 345. Reverse Vowels of a String

LeetCode_345. Reverse Vowels of a String

[LeetCode]345 Reverse Vowels of a String

leetcode 345. Reverse Vowels of a String