题目一:LC344题——反转字符串
题目概述
没啥好说的,反转就完事了…
解题思路
遇到字符串的查找和打印问题,首先就要想到双指针。将left指向字符数组首元素,right指向字符数组尾元素
代码如下
void reverseString(vector<char> &s)
{
int n = s.size();
for(int left = 0, right = n - 1; left < right; ++left, --right)
{
swap(s[left], s[right]);
}
}
算法时间复杂度:O(n),因为执行了n/2次交换; 空间复杂度:O(1),因为没有使用多余的数组空间。
题目二:LC344题——反转字符串的元音字母
题目三:LC3——无重复字符的最长子串
太高频了这个题目…
解题思路
代码如下
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.size();
if(n==0) return 0;
unordered_set<char> pairs;
int res=0;
int left = 0;
for(int i = 0;i < n;++i){
while(pairs.find(s[i])!=pairs.end()) {
pairs.erase(s[left]);
left++;
}
pairs.insert(s[i]);
res = max(res, i-left+1);
}
return res;
}
};