LeetCode 第 345 题(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”.
这道题用 C++ 来做是比较简单的。 STL 中有 set 类型,可以方便的判断一个字符是不是在特定的字符集合中。剩下的就是字符串操作。相对来说也比较简单。
下面是代码:
string reverseVowels(string s)
{
char vowels[] = "aeiouAEIOU";
set<char> dict(vowels, vowels + 10);
string::iterator head = s.begin();
string::iterator tail = s.end();
while(head != tail)
{
if(dict.count(*head)) // 当前字符是原音字符
{
while (tail != head) // 从后往前找
{
tail --;
if(dict.count(*tail)) // 找到了就做一下交换,即使这时 head 和 tail 指向同一个字符也没关系
{
char t = *head;
*head = *tail;
*tail = t;
break;
}
}
if(tail == head) return s;
}
head ++;
}
return s;
}