Codewars-Python-6 kyu Your order, please

本文介绍了一种基于字符串中数字大小进行排序的算法实现。通过将输入字符串转换为列表,遍历列表找到每个单词内的数字,并使用字典记录数字与单词下标的对应关系,最终根据数字排序重新组织字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一道简单的字符串题,需要根据字符串内每个单词内数字的大小将字符排序,比如:

"is2 Thi1s T4est 3a" --> "Thi1s is2 3a T4est"

"4of Fo1r pe6ople g3ood th5e the2" --> "Fo1r the2 g3ood 4of th5e pe6ople"

https://www.codewars.com/kata/55c45be3b2079eccff00010f

思路:

先把字符串输入text转成list,这样可以方便地通过下标访问每个单词。

然后遍历list,找到每个单词里的数字,再通过新建字典里的键值对{数字:单词下标},记录当前单词的下标,同时建一个list存数字。

将list 排序,然后顺序扫描list 内元素,利用刚才的键值对得到单词下标,通过下标访问单词并将其复制到res中。

最后给res里的单词排好格式并输出。

def order(sentence):
  dict = {}
  list = []
  sentence_split = sentence.split(" ")
  
  for item in sentence_split:
      for char in item:
          a_code = ord(char)
          if a_code >= ord("0") and a_code <= ord("9"): 
              dict[char] = sentence_split.index(item)
              list.append(a_code - ord("0"))
              break
  list.sort()

  res = []
  for i in list:
       res.append(sentence_split[dict[str(i)]])
          
  return " ".join(item for item in res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值