题目
题目链接
`## 解题思路
这是一个字符串旋转问题。需要将字符串以指定位置p为界,将左右两部分互换位置。
关键点:
- 分割字符串的左右两部分
- 注意p的位置是包含在左侧的
- 字符串拼接的顺序
- 边界条件的处理
算法步骤:
- 检查输入合法性
- 分割字符串为左右两部分
- 拼接右部分和左部分
- 返回结果字符串
代码
class StringRotation {
public:string rotateString(string A, int n, int p) {if (A.empty() || n <= 0 || p < 0 || p >= n) {return A;}// 分割并拼接字符串string left = A.substr(0, p + 1);string right = A.substr(p + 1);return right + left;}
};
import java.util.*;public class StringRotation {public String rotateString(String A, int n, int p) {// 检查输入合法性if (A == null || A.isEmpty() || n <= 0 || p < 0 || p >= n) {return A;}// 分割并拼接字符串String left = A.substring(0, p + 1);String right = A.substring(p + 1);return right + left;}
}
#!/usr/bin/env python
# -*- coding: utf-8 -*-class StringRotation:def rotateString(self, A, n, p):# 检查输入合法性if not A or n <= 0 or p < 0 or p >= n:return A# 分割并拼接字符串left = A[:p+1]right = A[p+1:]return right + left
算法及复杂度
- 算法:字符串操作
- 时间复杂度:\(\mathcal{O(n)}\),需要遍历整个字符串
- 空间复杂度:\(\mathcal{O(n)}\),需要存储结果字符串
`