zoukankan      html  css  js  c++  java
  • 双端队列-有序队列

    有序队列

    题目内容

    一开始给出了一个由小写字母组成的字符串 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))
    
    
  • 相关阅读:
    DBSCAN算法及sklearn实现
    K-MEANS算法及sklearn实现
    Linux删除有规则文件夹,比如(50-100)
    11.tensorboard网络结构
    10.优化器
    9.正则化
    8.Dropout
    Linux中awk后面的RS, ORS, FS, OFS 含义
    hadoop 客户的的使用
    shell中的>&1和 >&2是什么意思?
  • 原文地址:https://www.cnblogs.com/SKEZhi/p/13346189.html
Copyright © 2011-2022 走看看