题目链接:
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”.
中文解释:
翻转一个字符串中的元音字母。
例如:
hello -> holle
leetcode -> leotcede
题目解释:
这个题目挺直接的,仅仅让翻转元音字母,那么我们用一个数据结构来存储一下所有元音字母:‘a’, ‘A’, ‘e’, ‘E’, ‘i’, ‘I’, ‘o’, ‘O’, ‘u’, ‘U’。这里要注意元音字母一共有10个,分大小写的。从两端开始向中间遍历string中的字母,定位到两个元音字母切头坐标不大于尾坐标时就交换两个字母,直到头坐标大于尾坐标。
这里我们使用了C++的STL标准模板库set。
AC代码:
class Solution {
public:
string reverseVowels(string s) {
set<char> myset;
//将元音字母存到set集合中
myset.insert('a');
myset.insert('e');
myset.insert('i');
myset.insert('o');
myset.insert('u');
myset.insert('A');
myset.insert('E');
myset.insert('I');
myset.insert('O');
myset.insert('U');
int i = 0;
int j = s.length() - 1;
//printf("%d %d\n", i, j);
while(i < j){
while(myset.find(s[i]) == myset.end()){
i++;
//cout<<i<<endl;
}
while(myset.find(s[j]) == myset.end()){
j--;
}
// cout<<j<<endl;
if(i < j){
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
else{
break;
}
}
return s;
}
};