Item
题目:将给定字符串中的大写字母进行升序排序
Example
“ADWFYTKD” >>> “ADDFKTWY”
Parsing
- 逐一获取ASCII码进行比较;
- 采用冒泡排序。
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))