题目:
代码(首刷看解析):
class Solution {
public:
string reverseVowels(string s) {
auto isVoewl = [voewl="aeiouAEIOU"s](char ch){
return voewl.find(ch)!=string::npos;
};
int len=s.size();
int foreIndex=0;
int backIndex=len-1;
while(foreIndex<backIndex){
while(foreIndex<len && !isVoewl(s[foreIndex])){
++foreIndex;
}
while(backIndex>0 && !isVoewl(s[backIndex])){
--backIndex;
}
if(foreIndex<backIndex) swap(s[foreIndex],s[backIndex]);
++foreIndex;
--backIndex;
}
return s;
}
};
用到了Lambda表达式;其中[ ]表示捕获,在C++14后捕获内部可可以初始化值;
string::npos作用:当find函数未找到目标时会返回的值,一般是一个极大值;
思想:双指针