Rotate String
来源:互联网 发布:张静初为什么不红 知乎 编辑:程序博客网 时间:2024/05/16 10:13
Rotate String
旋转string
Given a string and an offset, rotate string by offset. (rotate from left to right)
Example
Solution:Given "abcdefg"
for offset=0, return "abcdefg"
for offset=1, return "gabcdef"
for offset=2, return "fgabcde"
for offset=3, return "efgabcd"
public char[] rotateString(char[] A, int offset) { if (A == null) { return null; } char[] result = new char[A.length]; if (A.length == 0) { return result; } offset = offset % A.length; int i; int j; for (i = 0, j = A.length - offset; i < offset; i++, j++) { result[i] = A[j]; } for (j = 0; j < A.length - offset; i++, j++) { result[i] = A[j]; } return result; }
public char[] rotateString(char[] A, int offset) { if (A == null) { return null; } char[] result = new char[A.length]; if (A.length == 0) { return result; } offset = offset % A.length; System.arraycopy(A, A.length - offset, result, 0, offset); System.arraycopy(A, 0, result, offset, A.length - offset); return result; }
public char[] rotateString(char[] A, int offset) { if(A == null|| A.length <= 1) { return A; } offset = offset % A.length; if(offset <= 0) { return A; } //0123456 //abcdefg reverse(A, A.length - offset, A.length - 1); reverse(A, 0, A.length - offset - 1); reverse(A, 0, A.length - 1); return A; } private void reverse(char[] A, int start, int end) { for(int i = start, j = end; i < j; i++,j--) { char temp = A[i]; A[i] = A[j]; A[j] = temp; } }
思路:
双index用起来方便。一段是0到A.length - offset - 1, 一段是A.length - offset到A.length - 1. 先把后一段拷贝,在把前一段拷贝。
使用System.arraycopy(src, SrcStart, dest, DestStart, len)实现数组拷贝。
三步翻转法。一定是段内有序。
0 0
- Rotate String
- Rotate String
- [刷题]Rotate String
- #8 Rotate String
- 算法规律 rotate String
- 【LintCode】Rotate String 旋转字符串
- Lintcode8 Rotate String solution 题解
- 左旋转字符串 left rotate string
- Rotate String 问题使用取余解法
- [Lintcode]Rotate String 两步翻转法
- string rotation (if string is the rotate of the other)
- rotate
- Rotate
- Rotate
- Rotate
- Rotate
- rotate
- 代码面试题:Rotate string by k element
- 智能卡的发展,以及射频电子标签在其中所处的位置
- Party at Hali-Bula
- excel 数组函数入门讲座
- Cookie的介绍
- 前端技术学习步骤
- Rotate String
- 判定一个图为树
- Compound Literals
- XCL-Charts图表库简要教程及常见问题
- ios atomic nonatomic区别
- 后台学习计划
- Android开源图表库XCL-Charts版本发布及展示页
- 面向对象
- 实模式下寻址4G