5.6 如何对由大小写字母组成的字符数组排序
【出自GG面试题】
难度系数:★★★☆☆ 被考察系数:★★★☆☆
题目描述:
有一个由大小写字母组成的字符串,请对它进行重新组合,使得其中的所有小写字母排在大写字母的前面(大写或小写字母之间不要求保持原来次序)。
分析与解答:
本题目可以使用类似快速排序的方法处理,可以用两个索引分别指向字符串的首和尾,首索引正向遍历字符串,找到第一个大写字母,尾索引逆向遍历字符串,找到第一个小写字母,交换两个索引位置的字符,然后将两个索引沿着相应的方向继续向前移动,重复上述步骤,直到首索引大于或等于尾索引为止。具体实现如下:

程序的运行结果如下:
fbceDA
算法性能分析:
这种方法对字符串只进行了一次遍历,因此,算法的时间复杂度为O(N),其中,N是字符串的长度。