lintcode练习-49. 字符大小写排序

描述

给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序。

小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置。

您在真实的面试中是否遇到过这个题?  是

样例

给出"abAcD",一个可能的答案为"acbAD"

挑战

在原地扫描一遍完成

实现代码:

class Solution:
    """
    @param: chars: The letter array you should sort by Case
    @return: nothing
    """
    '''
    def sortLetters(self, chars):
        # write your code here
        up_char = []
        low_char = []
        for i in range(len(chars)):
            if ord(chars[i]) >= 97 and ord(chars[i]) <= 122:
                low_char.append(chars[i])
                low_char.sort()
            # else ord(chars[i]) >= 65 and ord(chars[i]) <= 90:
            else:
                up_char.append(chars[i])
                up_char.sort()
        
        chars[:] = low_char + up_char
    '''
    def sortLetters(self, chars):
        l, r = 0, len(chars) - 1
        while l < r:
            while l < r and not chars[l].isupper():
                l += 1
            while l < r and chars[r].isupper():
                r -= 1
            if l < r:
                chars[l], chars[r] = chars[r], chars[l]

        return chars
    
    '''
    return chars.sort(key = lambda x: x.isupper())
    '''
                
 

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81407589