[LeetCode]345. Reverse Vowels of a String解題レポート(C++)
4347 ワード
[LeetCode]345. Reverse Vowels of a String解題レポート(C++)
タイトルの説明
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”.
Note: The vowels does not include the letter “y”.
テーマの大意文字列内のアクセント文字を に反転
問題を解く構想.
方法1:ぐらい探しています.アクセント文字の反転を見つける..
コード実装:
方法2:用 コード実装:
タイトルの説明
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”.
Note: The vowels does not include the letter “y”.
テーマの大意
問題を解く構想.
方法1:
コード実装:
class Solution {
public:
string reverseVowels(string s) {
set<char> myset = { 'A','E','I','O','U' };
int i = 0, j = s.size() - 1;
while (i < j) {
char t1 = toupper(s[i]);
char t2 = toupper(s[j]);
if (myset.count(t1)&& myset.count(t2)){
swap(s[i++], s[j--]);
}
else if (myset.count(t1)) {
j--;
}
else if (myset.count(t2)) {
i++;
}
else {
i++; j--;
}
}
return s;
}
};
// string set
class Solution {
public:
string reverseVowels(string s) {
int left = 0, right = s.size() - 1;
string t = "aeiouAEIOU";
while (left < right) {
if (t.find(s[left]) == string::npos) ++left;
else if (t.find(s[right]) == string::npos) --right;
else swap(s[left++], s[right--]);
}
return s;
}
};
方法2:
find_first_of
とfind_last_of
class Solution {
public:
string reverseVowels(string s) {
int left = 0, right = s.size() - 1;
while (left < right) {
left = s.find_first_of("aeiouAEIOU", left);
right = s.find_last_of("aeiouAEIOU", right);
if (left < right) {
swap(s[left++], s[right--]);
}
}
return s;
}
};