leetcode541:反转字符串II
反转字符串II
给定一个字符串 s
和一个整数 k
,从字符串开头算起,每计数至 2k
个字符,就反转这 2k
字符中的前 k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。 - 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样。
public String reverseStr(String s, int k) {StringBuilder res = new StringBuilder();int start = 0;while(start + k<=s.length()){//n - n+kres.append(reverse(s.substring(start, start + k)));if(start + 2*k<=s.length()){//n+k+1 - n+2kres.append(s.substring(start+k,start+2*k));}else{res.append(s.substring(start+k));}start += 2*k;}if (start<s.length()) {res.append(reverse(s.substring(start)));}return res.toString();}String reverse(String s){int start = 0;int end = s.length()-1;char[] arr = s.toCharArray();char tmp;while(start < end){tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;start++;end--;}return new String(arr);}
双指针