题目要求:写一个函数要求反转string字符串中的元音字母,如输入“hello”,则输出“holle”;输入“leetcode”,则输出“leotcede”。
实现思路:可以设置一个与输入字符串长度相等的整型数组num[s.size()],用来存储元音字母出现的位置,如“hello”中num[0]=1,num[1]=4,num数组中存储的元素个数就是string 字符串中的元音字母的个数。然后将num数组中所存储的值对应的字符串中的字符反转。
实现代码:
class Solution {
public:
string reverseVowels(string s) {
int l=s.size();
int num[l];
int v=0;
for(int i=0;i<l;i++){
if(isvowel(s[i])){
num[v]=i;
v++;
}
}
int lo=0;
int hi=v-1;
for(int i=lo,j=hi;i<j;i++,j--){
char c=s[num[j]];
s[num[j]]=s[num[i]];
s[num[i]]=c;
}
return s;
}
bool isvowel(char c){
switch(c)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U': return true;
break;
default: return false;
}
}
};
总结:最近一直在看C++ primer plus和算法书,真是好久好久都没有刷题了,之所以不刷题是因为觉得自己基础太差了,应该多看看书巩固一下基础知识再刷可能会更好一点。现在把C++primer plus那本书看了将近一半了,听别人说可以边看书边刷题,然后我就重新试了一下,果然现在刷题感觉容易了许多,一次就AC。还是基础知识比较重要,继续加油!