1.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
考察知识点:双指针
class Solution {
public:
void reverseString(vector<char>& s)
{
for(int i=0,j=s.size()-1;i<s.size()/2;i++,j--)
swap(s[i],s[j]);
}
};
2.反转字符串中的元音字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
考察知识点:双指针
class Solution {
public:
string reverseVowels(string s) {
int l=0,r=s.size()-1;
while(l<r)
{
if(tolower(s[l])!='a'&&tolower(s[l])!='e'&&tolower(s[l])!='i'&&tolower(s[l])!='o'&&tolower(s[l])!='u')
{
++l;
continue;
}
if(tolower(s[r])!='a'&&tolower(s[r])!='e'&&tolower(s[r])!='i'&&tolower(s[r])!='o'&&tolower(s[r])!='u')
{
--r;
continue;
}
swap(s[l],s[r]);
++l;--r;
}
return s;
}
};
这篇博客探讨了两种字符串操作:一是原地反转整个字符串,二是仅反转字符串中的元音字母。这两种操作都使用了双指针技巧,有效地在O(1)额外空间复杂度下完成任务。对于反转字符串,从两端向中间遍历并交换对应位置的字符;对于反转元音字母,两个指针分别从字符串首尾开始,当遇到非元音字母时跳过,遇到元音字母则交换位置,直至两指针相遇。
622

被折叠的 条评论
为什么被折叠?



