CS-Notes/notes/58.2 左旋转字符串.md

44 lines
965 B
Java
Raw Normal View History

2019-11-02 12:07:41 +08:00
# 58.2 左旋转字符串
2020-11-04 02:26:10 +08:00
## 题目链接
[牛客网](https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec?tpId=13&tqId=11196&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
2019-11-02 12:07:41 +08:00
## 题目描述
```html
Input:
S="abcXYZdef"
K=3
Output:
"XYZdefabc"
```
## 解题思路
先将 "abc" "XYZdef" 分别翻转得到 "cbafedZYX"然后再把整个字符串翻转得到 "XYZdefabc"
```java
public String LeftRotateString(String str, int n) {
if (n >= str.length())
return str;
char[] chars = str.toCharArray();
reverse(chars, 0, n - 1);
reverse(chars, n, chars.length - 1);
reverse(chars, 0, chars.length - 1);
return new String(chars);
}
private void reverse(char[] chars, int i, int j) {
while (i < j)
swap(chars, i++, j--);
}
private void swap(char[] chars, int i, int j) {
char t = chars[i];
chars[i] = chars[j];
chars[j] = t;
}
```