541. Reverse String II
来源:互联网 发布:幼儿英语网络课程 编辑:程序博客网 时间:2024/04/30 14:41
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = "abcdefg", k = 2Output: "bacdfeg"Restrictions:
- The string consists of lower English letters only.
- Length of the given string and k will in the range [1, 10000]
自己写一个reverse函数用来反转start-start+k的子字符串。这里需要判断start+k不要越界。代码如下:
public class Solution { public String reverseStr(String s, int k) { char[] chs = s.toCharArray(); int count = 1; for (int i = 0; i < chs.length; i = i + k) { if (count % 2 == 1) { reverse(chs, i, i + k - 1, k); } count ++; } return new String(chs); } private void reverse(char[] chs, int start, int end, int k) { if (start + k > chs.length) { end = chs.length - 1; } while (start < end) { char temp = chs[start]; chs[start] = chs[end]; chs[end] = temp; start ++; end --; } }}比较简洁的版本,代码如下:
public class Solution { public String reverseStr(String s, int k) { char[] arr = s.toCharArray(); int n = arr.length; int i = 0; while(i < n) { int j = Math.min(i + k - 1, n - 1); swap(arr, i, j); i += 2 * k; } return String.valueOf(arr); } private void swap(char[] arr, int l, int r) { while (l < r) { char temp = arr[l]; arr[l++] = arr[r]; arr[r--] = temp; } }}
0 0
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- 541. Reverse String II
- String:541. Reverse String II
- leetcode 541. Reverse String II
- Leetcode-541. Reverse String II
- 高级数据结构一书中的内容来源
- Servlet中forward和redirect(sendRedirect)有什么区别以及filter(过滤器)是什么?
- node_debug调试代码
- node-NPM常用命令
- mysql存储过程
- 541. Reverse String II
- [面试算法] 01背包 && 完全背包
- Java HashSet TreeSet LinkedHashSet 三种Set接口实现的比较
- SQL SELECT
- 剑指Offer面试题28字符串的排列组合(递归和栈)
- mysql常用命令与SQL语句
- jsp语言基础6-函数
- Java内存管理:深入Java内存区域
- sizeof运算符