代码随想录算法训练营第7天|字符串part01

今日任务

  • 344.反转字符串
  • 541. 反转字符串II
  • 卡码网:54.替换数字

详细布置

344.反转字符串

建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数

题目链接/文章讲解/视频讲解:代码随想录

class Solution {
public:
    void reverseString(vector<char>& s) {
        int left=0;
        int right=s.size()-1;
    while(left<right)
    {
        s[left]^=s[right];
        s[right] ^= s[left];
        s[left]^=s[right];
        left++;
        right--;
}
    }
};

感觉是做过的比较简单的题目,只要交换下,即可。双指针法确实好用方便。没有什么好讲的。

541. 反转字符串II

建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。

class Solution {
public:
    string reverseStr(string s, int k) {
        int left=0;
        int right=k-1;
        for(int i=1;left<s.size();i++){  
            if(right>=s.size())
            right=s.size()-1;
            while(left<right)
             {
            s[left]^=s[right];
            s[right]^=s[left];
            s[left]^=s[right];
            left++;
            right--;
        }
             left=2*i*k;
             right=2*i*k+k-1;
        }
    return s;
    }
};

感觉这题算是自己做过的还算比较简单的题,非常意外的,只改了两次bug就提交成功,在写代码时,究竟是<还是<=,>还是>=。第二次提交的时候,通过了58个例子,结果2个没有通过,此时说明主体思路没有问题,但是部分可能会有bug,就要考率是不是判断的问题。很惊喜。

题目链接/文章讲解/视频讲解:代码随想录

卡码网:54.替换数字

这题也不难,虽然卡尔给的思路也很简单,但是

class Solution {
public:
    string anumberbnumbercnumber(string s) {
        int left=0;
        int right=s.size()-1;
      string number = "number";
       for(int i=0;i<s.size();i++)
       if(s[i]>='0'&&s[i]<='9')
       {
          s.insert(i, number); 
          i+=6;
       }
    return s;
    }
};

题目链接/文章讲解:代码随想录

感觉今天的题目算是比较简单的,以前用了点string,还是有点好处的。 今天就是单纯打个卡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值