ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

代码随想录Day8_字符串

代码随想录Day8_字符串

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

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

思路:

题目理解:对一个字符串,前k个反转,后k个不反转,依此类推 ......

1.设一个循环,实现间隔2k进行操作;

2.循环中实现前k个反转;

问题:

1.右边界的定义为什么是min(i+k-1,n-1)

i+k-1   类比left =0,right=k-1;left = i,right = i+k-1;

当s=abc

i=0  ,i=2时,left = 2,right =2+2-1=3,s[2] = 'c';s[3]不存在;预期输出是bac

n-1   =3-1=2;是不变的。

怎么想到这一点?

返回列表