【力扣刷题 | 第六天】

目录

 

前言:

344. 反转字符串 - 力扣(LeetCode)

541. 反转字符串 II - 力扣(LeetCode)


 今天我们进入字符串章节的刷题旅程,希望各位小伙伴可以和我一起坚持下去,一起征服力扣!

前言:

           今天我们进入字符串章节的刷题旅程,希望各位小伙伴可以和我一起坚持下去,一起征服力扣!

344. 反转字符串 - 力扣(LeetCode)

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

【力扣刷题 | 第六天】_第1张图片

解法1.调用库函数:reverse 

class Solution {
public:
    void reverseString(vector& s) {
       reverse(s.begin(),s.end());
  
    }
};

解法2:双指针法,一个left指向头,一个right指向尾,逐次交换直到left>right终止交换

lass Solution {
public:
    void reverseString(vector& s) {
        int left=0;
        int right=s.size()-1;
        while(left

541. 反转字符串 II - 力扣(LeetCode)

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
【力扣刷题 | 第六天】_第2张图片

解法1:

class Solution {
public:
    string reverseStr(string s, int k) {
        for (int i = 0; i < s.size(); i += (2 * k)) {
          
            if (i + k <= s.size()) {
                reverse(s.begin() + i, s.begin() + i + k );
            }
            else {
                
                reverse(s.begin() + i, s.end());
            }
        }
        return s;
    }
};

 

今天的内容到这里就结束了,感谢大家的阅读。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

【力扣刷题 | 第六天】_第3张图片

 

 

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