📌  相关文章
📜  在删除小于X的值之后,按相关值的降序对字符串进行排序

📅  最后修改于: 2021-05-18 00:00:28             🧑  作者: Mango

给定一个整数X和一个由空格分隔的文本数字交替放置的字符串str ,任务是对字符串进行排序,以使文本和数字在删除所有小于X的数字后,以相关的数字降序出现。如果两个字符串具有相同的值,则按字符串的字典顺序对其进行排序。

例子:

方法:想法是使用冒泡排序技术。请按照以下步骤解决问题:

  • 将字符串拆分为一个列表,然后删除小于给定值(即X)的条目。
  • 使用气泡排序方法根据与列表关联的数字对列表进行排序。
  • 如果数字不相等,请按降序对数字进行排序,并同时对名称进行排序。
  • 如果数字相等,则按字典顺序对它们进行排序。
  • 将字符串和数字同时交换,以使其保持在一起。

下面是上述方法的实现:

Python3
# Python Program to implement
# the above approach
  
# Function to split the input
# string into a list
def tokenizer(Str):
    List = Str.split()
    return List
  
# Function to sort the given list based
# on values at odd indices of the list
def SortListByOddIndices(List, x):
  
    l = len(List)
  
# Function to remove the values
# less than the given value x
    for i in range(l - 1, 0, -2):
        if int(List[i]) < x:
            del(List[i - 1: i + 1])
  
    l = len(List)
  
    for i in range(1, l, 2):
        for j in range(1, l - i, 2):
  
            # Compares values at odd indices of
            # the list to sort the list
            if List[j] < List[j + 2] \
            or (List[j - 1] > List[j + 1] \
            and List[j] == List[j + 2]):
                  
                List[j], List[j + 2] \
                = List[j + 2], List[j]
                  
                List[j - 1], List[j + 1] \
                = List[j + 1], List[j - 1]
  
    return ' '.join(List)
  
  
# Driver Code
Str = "Axc 78 Czy 60"
x = 77
  
# Function call
List = tokenizer(Str)
  
Str = SortListByOddIndices(List, x)
  
print(Str)


输出:
Axc 78

时间复杂度: O(N 2 )
辅助空间: O(N)