1. 程式人生 > >【LeetCode】 345. 反轉字串中的母音字母

【LeetCode】 345. 反轉字串中的母音字母

1.題目

編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。

2.思路

遍歷字串,把母音字母放入向量中;
再次遍歷字串的時候,把這些母音字母再從向量中從後向前輸出。

3.程式碼

class Solution {
public:
    string reverseVowels(string s) {
        int len=s.length();
	vector<char>vol;
	for(int i=0;i<len;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') vol.push_back(s[i]); } int size=vol.size(); for(int i=0,j=size-1;i<len;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') s[i]=vol[j--]; } cout<<
s; return s; } };

4.優秀案例

判斷是否為母音的函式;
遍歷字串,是母音則交換。

class Solution {
public:
    bool isVowels(char s) {
      return s == 'a' || s == 'e' || s == 'i' || s == 'o'  || s == 'u' 
        || s == 'A' || s == 'E' || s == 'I' || s == 'O'  || s == 'U';
    }
  
    string reverseVowels(string s)
{ int size = s.size(); int i = 0; int j = size - 1; while (i < j) { if (isVowels(s[i]) && isVowels(s[j])) { char temp = s[i]; s[i] = s[j]; s[j] = temp; i++; j--; continue; } if (!isVowels(s[i])) { i++; } if (!isVowels(s[j])) { j--; } } return s; } };