初见Python解题之道(十五)

Item

题目:将给定字符串中的大写字母进行升序排序

Example

“ADWFYTKD” >>> “ADDFKTWY”

Parsing

  1. 逐一获取ASCII码进行比较;
  2. 采用冒泡排序。

Code

# 如果改成将大的元素前置,输出:ADDFKTWY
testChaStr = "ADWFYTKD"
chaList = list(testChaStr)

for cha in range(len(chaList)):
    for i in range(len(chaList) - cha - 1):
        if chaList[i+1] < chaList[i]:
            j = chaList[i]
            chaList[i], chaList[i+1] = chaList[i+1], j

print("".join(chaList))

Summarize

之前的思路中提到了将字母转换成ASCII码,在进行比较,但是代码中并没有使用到ord()函数,为什么呢?因为Python中字符串进行比较时,其实比较的就是ASCII码大小,经过测试:

print("A">"B") # 输出False
print(ord("A")>ord("B")) # 输出False

print("D">"B") # 输出True
print(ord("D")>ord("B")) # 输出True

冒泡排序的本质是:在完整次数下,逐一比较相邻元素的大小,根据实际情况进行将最小或者最大的元素一一后置或者前置。

# 如果改成将大的元素前置,输出:YWTKFDDA
testChaStr = "ADWFYTKD"
chaList = list(testChaStr)

for cha in range(len(chaList)):
    for i in range(len(chaList) - cha - 1):
        if chaList[i+1] > chaList[i]:
            j = chaList[i]
            chaList[i], chaList[i+1] = chaList[i+1], j

print("".join(chaList))
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾平安6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值