Sort Letters By Case

Question

Given a string which contains only letters. Sort it by lower case first and upper case second.

Example

For "abAcD", a reasonable answer is "acbAD"

Note It's not necessary to keep the original order of lower-case letters and upper case letters.

Challenge Do it in one-pass and in-place.

Thoughts

just like sort colors, only two type here

Solution

class Solution:
    """
    @param chars: The letters array you should sort.
    """
    def sortLetters(self, chars):
        if not chars:
            return None
        # write your code here
        numRed = 0 
        length = len(chars)
        index = 0
        while index <= length - 1:
            if chars[index] in 'abcdefghijklmnopqrstuvwxyz':
                chars = self.swap(chars, numRed, index)
                numRed += 1
                index += 1
            else:
                index += 1
        return chars        

    def swap(self, chars, i, j):
        tmp = chars[j]
        chars[j] = chars[i]
        chars[i] = tmp
        return chars