例如我有一个字符串
string = "FolloW"
我需要将字符串重新排序,最大的字母最先,最小的最后。
理论上结果为 "oollWF"
现在我的代码是:
string = "FolloW"
List = {}
Tmp = ''
for i in range(len(string)):
Tmp = i
for j in range(i+1,len(string)):
if string[Tmp] >= string[j]:
List[i] = string[Tmp]
else:
List[i] = string[j]
for i in List:
print i,List[i]
结果为:
C:\Python27\python.exe "D:/Learning/Python Project/Test"
0 W
1 o
2 l
3 l
4 o
Process finished with exit code 0
>>> string = "FolloW"
>>> l = list(string)
>>> l.sort(reverse=True)
>>> l
['o', 'o', 'l', 'l', 'W', 'F']
string = "FolloW"
List = {}
Tmp = ''
for i in range(len(string)):
Tmp = i
List[i] = string[Tmp]
k = 0
for j in range(i+1,len(string)):
if List[i] < string[j]:
List[i] = string[j]
k = j
if k > 0:
string = string[k] + string[0:k] + string[k+1:]
for i in List:
print i,List[i]
第二轮循环中,你应该拿当前得到的最大值与后面的值对比,而不是string[Tmp]——(string[i])
第二轮循环选出最大值后,该值没用了,而且如果该值不是本轮比较的第一个,第一个值需要参与到后面的比较。
开始答案错了,改过的很粗糙。