在python中检查字符串是否按字母顺序排列

Pav*_*vic 11 python sorting string

我把以下代码放在一起,以检查字符串/单词是否按字母顺序排列:

def isInAlphabeticalOrder(word):
    word1=sorted(word)
    word2=[]
    for i in word:
        word2.append(i)
    if word2 == word1:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

但我觉得除了将字符串转换成列表之外,还有一种更有效的方法(更少的代码行).是不是有一个操作数来按字母顺序排序字符串而不将每个字符串转换为列表?任何人都可以提出更有效的方法吗?

i l*_*low 15

这具有O(n)的优点(对字符串进行排序为O(n log n)).Python中的字符(或字符串)如果按字母顺序排在前面,则"小于"另一个字符,因此为了查看字符串是否按字母顺序排列,我们只需要比较每对相邻的字符.另外,请注意您使用range(len(word) - 1)而不是range(len(word)),否则您将在循环的最后一次迭代中超越字符串的边界.

def isInAlphabeticalOrder(word):
    for i in range(len(word) - 1):
        if word[i] > word[i + 1]:
            return False
    return True
Run Code Online (Sandbox Code Playgroud)


小智 14

这是一种简单(和Python惯用)方式:

def isInAlphabeticalOrder(word):
    return word==''.join(sorted(word))

>>> isInAlphabeticalOrder('abc')
True
>>> isInAlphabeticalOrder('acb')    
False
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个:`list(word)== sorted(word)` (4认同)

ale*_*lex 8

这是最简单的:

def alphabetical(word):
    return list(word) == sorted(word)
Run Code Online (Sandbox Code Playgroud)