`## 解题思路

这是一个字符串旋转问题。需要将字符串以指定位置p为界,将左右两部分互换位置。

关键点:

  1. 分割字符串的左右两部分
  2. 注意p的位置是包含在左侧的
  3. 字符串拼接的顺序
  4. 边界条件的处理

算法步骤:

  1. 检查输入合法性
  2. 分割字符串为左右两部分
  3. 拼接右部分和左部分
  4. 返回结果字符串

代码

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

算法及复杂度

  • 算法:字符串操作
  • 时间复杂度:,需要遍历整个字符串
  • 空间复杂度:,需要存储结果字符串 `