【LeetCode】 345. 反转字符串中的元音字母

版权声明:made by YYT https://blog.csdn.net/qq_37621506/article/details/83716829

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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_37621506/article/details/83716829