• 双端队列-有序队列


    有序队列

    题目内容

    一开始给出了一个由小写字母组成的字符串 S。我们规定每次移动中,选择最左侧的字母,将其从原位置移除,并加到字符串的末尾。这样的移动可以执行任意多次返回我们移动之后可以拥有的最小字符串(注:在Python3中,字符串的大小可用不等号比较)。


    代码

    from pythonds.basic.deque import Deque  # 为了便于操作数据,避免引入更多结构
    
    def func(S):
        print(type(S))
        nq = Deque()
        for each in S:  # 输入数据
            nq.addFront(each)
        nq.addFront(nq.removeRear())
        temp = ""
        min = S
        length = len(S)
        for i in range(length):
            s = nq.removeRear()
            nq.addFront(s)  # 保证队列不变
            temp = temp + s  # 字符串没有append方法,直接相加即可
        # print(temp)
        for i in range(length-1):  # 比较, 比较的次数不会超过字符串的长度
            if temp < min:
                min = temp            
            nq.addFront(nq.removeRear())  # 移动且每轮循环都要执行
            temp = ""
            for i in range(length):
                s = nq.removeRear()
                nq.addFront(s)
                temp = temp + s
            # print(temp)
        output = min
        return output
         
    S = eval(input())
    print(func(S))
    
    
  • 相关阅读:
    GO 爬虫图片相关
    GO 爬虫链接
    Redis使用
    HTTP请求
    lris框架基础案例
    UDP通信功能
    C++随机
    matplotlib显示指数部分的负号
    使用opencv-python读取中文路径图片
    pytorch模型可视化,torchviz,tensorboardX,文本方式
  • 原文地址:https://www.cnblogs.com/SKEZhi/p/13346189.html
Copyright © 2020-2023  润新知