力扣541(java)-反转字符串Ⅱ(简单)


题目:

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

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
 

示例 1:

输入:s = "abcdefg", k = 2
输出:"bacdfeg"
示例 2:

输入:s = "abcd", k = 2
输出:"bacd"
 

提示:

1 <= s.length <= 104
s 仅由小写英文组成
1 <= k <= 104

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-string-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

 1.将字符串变为字符数组,方便字符的遍历;

 2.定义两个指针,分别表示反转的起始位置和结束位置;

说明:Math.min(i + k, n) - 1,取最小值是当总字符数 < k时,翻转数就为n,减一是因为i是从0开始的,真实值要小1。

 代码:

小知识:

1.s.length是针对java中数组的,length是数组的一个属性,用来表示数组的长度,数组有length属性,而没有length()方法;

   s.length()则是字符串的一个方法,用来返回字符串的长度的,字符串是没有length属性的,只有length()方法。

2.toCharArray() 方法将字符串转换为字符数组。

// 将字符串s转化成一个char类型的数组,数组名为s1
char[] s1 = s.toCharArray(); 
//又将s1转化成string字符串
return new String(s1);