【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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章