首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用While循环和条件按字母顺序排列字符串?

如何使用While循环和条件按字母顺序排列字符串?
EN

Stack Overflow用户
提问于 2020-10-31 16:01:40
回答 4查看 124关注 0票数 1

给定字符串"aaababababab" (只有'a''b'允许):如何通过只使用like循环将字符串按字母顺序排序为"aaaaaaabbbbb"

这是我目前的尝试:

代码语言:javascript
复制
word = "ababababaabab"
wordfixed = ""
i = 0

while i < len(word):
    if word[i] == "a":
        wordfixed += "a"
        i += 1

    elif word[i] == "b":
        wordfixed += (word[i])
        i += 1

print(wordfixed)

但是它只是简单地将原始单词打印回来。如何让它打印所需的输出?

EN

回答 4

Stack Overflow用户

发布于 2020-10-31 16:10:52

根据您当前的想法,您只需根据字母的值将其附加到一端或另一端即可。这将允许a在开始时积累,而b可以在结束时进行构建。

代码语言:javascript
复制
word = "ababababaabab"
wordfixed = ""
i = 0

while i < len(word):
    if word[i] == "a":
        wordfixed = word[i] + wordfixed 
    elif word[i] == "b":
        wordfixed = wordfixed + word[i]
    i += 1


print(wordfixed)
# aaaaaaabbbbbb
票数 1
EN

Stack Overflow用户

发布于 2020-10-31 16:14:09

您可以创建两个“助手”变量:一个用于积累a,另一个用于b

代码语言:javascript
复制
word = "ababababaabab"
wordfixed = ""
wordfixed2 = ""
wordfixed3 = ""
i = 0

while i < len(word):
    if word[i] == "a":
        wordfixed2 += "a"
    elif word[i] == "b":
        wordfixed3 += "b"
    i += 1

wordfixed = wordfixed2 + wordfixed3
print(wordfixed)

我认为这样做是正确的。

票数 1
EN

Stack Overflow用户

发布于 2020-10-31 16:08:53

您的代码不工作,因为您添加了您目前的字母,在结尾-因此,它将是相同的。

相反,您可以在循环一次字符串时计数'a'的数量(for循环更适合,但也可以使用)-然后打印剩余的'b'

代码语言:javascript
复制
word = "ababababaabab"
lw = len(word)
i = 0 
a_s= 0  
while i < lw:
    if word[i] == 'a':
        print("a", end="")  # dont end the line quite yet
        a_s += 1 
    i += 1

# print b's for remaining wordlength minus printed a's
print('b' * (lw-a_s))

或者更好地使用for循环:

代码语言:javascript
复制
a_s = 0
for letter in word:
    if letter == "a":
        a_s +=1
        print(letter, end="")
print('b' * (lw-a_s))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64623704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档