[LeetCode]345. Reverse Vowels of a String解題レポート(C++)


[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:
  • ぐらい探しています.アクセント文字の反転を見つける..

  • コード実装:
    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_offind_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;
        }
    };