剑指Offer58-Ⅰ.左旋转字符串

  • 题目:剑指Offer58-Ⅰ.左旋转字符串
    把一个给定字符串s的前k个字符和后面的字符交换位置;
  • 思路:
    1.整体翻转+局部反转2次:时间O(n),空间O(1)
class Solution {
    
    
public:
    void reverse(string& s, int l, int r) {
    
    
        for (; l < r; ++l, --r) {
    
    
            swap(s[l], s[r]);
        }
    }
    string reverseLeftWords(string s, int k) {
    
    
        int n = s.size();
        if (k > n) return s;//说明没法旋转

        reverse(s, 0, n - 1);
        reverse(s, 0, n - k - 1);
        reverse(s, n - k, n - 1);
        
        return s;
    }
};

猜你喜欢

转载自blog.csdn.net/jiuri1005/article/details/114434512