zoukankan      html  css  js  c++  java
  • 剑指offer-左旋转字符串-知识迁移能力-python

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

    方法一:python切片(python最好的一点就是什么都可以用下标访问,也有很多神级操作,比如这个,实现一行,但是感觉只适合笔试,面试这样写是要跪的)

    # -*- coding:utf-8 -*-
    class Solution:
        def LeftRotateString(self, s, n):
            # write code here
            return s[n:]+s[:n]


    方法二:三次翻转实现(面试如果碰到要讲这个~~)
    s = ‘abcdefg’ n=2
    1.把字符串从[0:n-1]翻转,s = ‘bacdefg’ 是前后交换位置翻转
    2.把翻转一次的字符串再次翻转[n:len(s)-1],s = ‘bagfedc’
    3.把翻转两次的字符串再次整体翻转[0:len(s)-1], s = ‘cdegfab’ over

    class Solution:
        def reverse(self, s, l, r):
            while l < r:
                s[l], s[r] = s[r], s[l]
                l += 1
                r -= 1
    
        def LeftRotateString(self, s, n):
            if not s: return s
            s = list(s)  #str转成list处理
            self.reverse(s, 0, n - 1)
            self.reverse(s, n, len(s) - 1)
            self.reverse(s, 0, len(s) - 1)
            return ''.join(s)  #直接join列表就变成str了


    原文链接:https://blog.csdn.net/weixin_38377054/article/details/82670883

     

  • 相关阅读:
    don't run elasticsearch as root.
    详细讲解安全升级MySQL的方法
    mysql sql优化实例1(force index使用)
    mysql的force index
    【C++】string类用法
    【GAN】GAN设计与训练集锦
    【C++】VS Code配置
    【Windows】win10:硬件良好,软件系统出错
    【Windows】快速启动软件 非点击软件图标 无限弹窗
    【Ubuntu】利用sudo修改/etc/sudoers翻车
  • 原文地址:https://www.cnblogs.com/ansang/p/12071673.html
Copyright © 2011-2022 走看看