給一組string, 和子陣列的size k 判斷在size = k 的子陣列中最多母音的個數 思考: 1.移動窗格掃每個窗格內的母音數量, 固定的窗格size 2.紀錄該子陣列中有幾個母音 ```c++= class Solution { public: int maxVowels(string s, int k) { //移動窗格掃每個窗格內的母音數量, 固定的窗格size //紀錄該子陣列中有幾個母音 int temp = INT_MIN; int count = 0; int left = 0; int right = k-1; //第一個窗格內的母音量 for(int i = 0; i <= right; i++){ if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i'|| s[i] == 'o'|| s[i] == 'u' || s[i] == 'A'|| s[i] == 'E'|| s[i] == 'I'|| s[i] == 'O'|| s[i] == 'U'){ //如果掃到的是母音則++ count++; } } //得到第一個窗格內有的母音量 temp = max(temp, count); //開始移動窗格計算每一個子陣列的母音量 while(right < s.size()-1){ //刪前加後 判斷前面的是不是母音 -1 判斷後面是不是母音 +1 if(s[left] == 'a' || s[left] == 'e' || s[left] == 'i'|| s[left] == 'o'|| s[left] == 'u' || s[left] == 'A'|| s[left] == 'E'|| s[left] == 'I'|| s[left] == 'O'|| s[left] == 'U'){ count--; } right++; if(s[right] == 'a' || s[right] == 'e' || s[right] == 'i'|| s[right] == 'o'|| s[right] == 'u' || s[right] == 'A'|| s[right] == 'E'|| s[right] == 'I'|| s[right] == 'O'|| s[right] == 'U'){ count++; } left++; temp = max(count, temp); } return temp; } }; ``` ```c++= bool isVowel( char c ){ if( c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ) return true; return false; } isVowel(s[i]) ``` ```c++= class Solution { public: bool isVowels(char p){ if(p == 'a' || p == 'e' || p == 'i' || p == 'o' || p == 'u' || p == 'A'|| p == 'E'|| p == 'I'|| p == 'O'|| p == 'U' ){ return true; }else{ return false; } } int maxVowels(string s, int k) { //移動窗格 固定size int left = 0; int right = k-1; int count = 0; //得到初始窗格的母音數樣 for(int i = 0; i <= right; i++){ if(isVowels(s[i])){ //如果是母音就++ count++; } } int ans = INT_MIN; ans = max(ans, count); //開始移動窗格 while(right < s.size()-1){ right++; if(isVowels(s[left])){ //如果前面的是母音要-- count--; } if(isVowels(s[right])){ //如果後面的是母音要++ count++; } left++; ans = max(ans, count); } return ans; } }; ```