`## 解题思路
这是一个字符串旋转问题。需要将字符串以指定位置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
算法及复杂度
- 算法:字符串操作
- 时间复杂度:,需要遍历整个字符串
- 空间复杂度:,需要存储结果字符串 `