字符串简单题目汇总

LeetCode相关

Posted by 谢玄xx on April 12, 2022

题目一: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;
        
    }
};