代码随想录day8

344.反转字符串

方法一:直接调用库函数

方法二:

class Solution {
public:
    void reverseString(vector& s) {
        for(int i=0,j=s.size()-1;i

当然交换逻辑直接用swap就可以了。

541. 反转字符串II

整段整段的跳就可以了,只对每一段前k个字符进行翻转,后k个字符不动。

class Solution {
public:
    string reverseStr(string s, int k) {
        for(int i=0;i

剑指Offer 05.替换空格

预先给数组进行扩容,然后从后向前对数组进行填充。

class Solution {
public:
    string replaceSpace(string s) {
        int cnt=0;
        int oldsize=s.size();
        for(int i=0;i

151.翻转字符串里的单词

双指针去除空格,之后先整体翻转,再翻转单词

class Solution {
public:
    void removespace(string&s){//双指针原地去除空格
        int slow=0;
        for(int fast=0;fast

错因:1、在单词前面加空格之后,满指针忘记移动

2、反转每个单词时忽略了一种情况,如果最后j指向结尾,也要进行翻转。

剑指Offer58-II.左旋转字符串

局部反转+整体翻转

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        reverse(s.begin(),s.begin()+n);
        reverse(s.begin()+n,s.end());
        reverse(s.begin(),s.end());
        return s;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)