您的位置:首页 > 其它

LeetCode 第 345 题(Reverse Vowels of a String)

2016-05-01 19:28 531 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: