菜鸟笔记
提升您的技术认知

剑指offer

《剑指offer》刷题目笔记

剑指offer 数组

《剑指offer》二维数组中的查找《剑指offer》旋转数组的最小数字《剑指offer》调整数组顺序使奇数位于偶数前面《剑指offer》数组中出现次数超过一半的数字《剑指offer》连续子数组的最大和《剑指offer》把数组排成最小的数《剑指offer》数组中的逆序对《剑指offer》数字在排序数组中出现的次数《剑指offer》数组中只出现一次的数字《剑指offer》数组中重复的数字《剑指offer》构建乘积数组

剑指offer 字符串

《剑指offer》替换空格《剑指offer》字符串的排列《剑指offer》第一个只出现一次的字符《剑指offer》左旋转字符串《剑指offer》翻转单词顺序序列《剑指offer》把字符串转换成整数《剑指offer》正则表达式匹配《剑指offer》表示数值的字符串

剑指offer 链表

《剑指offer》从尾到头打印链表《剑指offer》链表中倒数第k个结点《剑指offer》反转链表《剑指offer》合并两个排序的链表《剑指offer》复杂链表的复制《剑指offer》两个链表的第一个公共结点《剑指offer》链表中环的入口结点《剑指offer》删除链表中重复的结点

剑指offer 树

《剑指offer》重建二叉树《剑指offer》树的子结构《剑指offer》二叉树的镜像《剑指offer》从上往下打印二叉树《剑指offer》二叉树中和为某一值的路径《剑指offer》二叉树的深度《剑指offer》平衡二叉树《剑指offer》二叉树的下一个结点《剑指offer》对称的二叉树《剑指offer》按之字顺序打印二叉树《剑指offer》把二叉树打印成多行《剑指offer》序列化二叉树

《剑指offer》左旋转字符串-ag真人游戏

阅读 : 105

题目描述

汇编语言中有一种移位指令叫做循环左移(rol),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列s,请你把其循环左移k位后的序列输出。例如,字符序列s=”abcxyzdef”,要求输出循环左移3位后的结果,即“xyzdefabc”。是不是很简单?ok,搞定它!😁

解题思路

例如:输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab";

第一步:翻转字符串“ab”,得到"ba";

第二步:翻转字符串"cdefg",得到"gfedc";

第三步:翻转字符串"bagfedc",得到"cdefgab";

或者:

第一步:翻转整个字符串"abcdefg",得到"gfedcba"

第二步:翻转字符串“gfedc”,得到"cdefg"

第三步:翻转字符串"ba",得到"ab"

代码实现(c )

class solution {
public:
    string leftrotatestring(string str, int n) {
        string result = str;
        int length = result.size();
        if(length < 0){
            return null;
        }
        if(0 <= n <= length){
            int pfirstbegin = 0, pfirstend = n - 1;
            int psecondbegin = n, psecondend = length - 1;
            reversestring(result, pfirstbegin, pfirstend);
            reversestring(result, psecondbegin, psecondend);
            reversestring(result, pfirstbegin, psecondend);
        }
        return result;
    }
private:
    void reversestring(string &str, int begin, int end){
        while(begin < end){
            swap(str[begin  ], str[end--]);
        }
    }
};

代码实现(python)

# -*- coding:utf-8 -*-
class solution:
    def leftrotatestring(self, s, n):
        # write code here
        length = len(s)
        if n <= 0 or length == 0:
            return s
        if n > length:
            n = n % length
        return s[n:]   s[:n]
网站地图