lintcode :sort letters by case字符大小写排序

本文介绍了一种简单有效的字符大小写排序算法实现方法,通过一次扫描即可完成排序,适用于只包含字母的字符串。该算法利用了快速排序的思想,将小写字母置于大写字母之前,同时不保留原有字符串中小写字母和大写字母之间的相对位置。

题目

字符大小写排序 

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

样例

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

注意

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

挑战

在原地扫描一遍完成

解题

这个题目很简单,前面刚做一个把大于某个数之和的排在后面,快速排序的思想

public class Solution {
    /** 
     *@param chars: The letter array you should sort by Case
     *@return: void
     */
    public void sortLetters(char[] chars) {
        //write your code here
        int len = chars.length;
        if(len ==0 || chars==null){
            
        }else{
            int i=0;
            int j=len-1;
            while(i<=j){
                while(i<=j && isLowerCase(chars[i])) i++;
                while(i<=j && isUpperCase(chars[j])) j--;
                if(i<=j){
                    char ch = chars[i];
                    chars[i] = chars[j];
                    chars[j] = ch;
                }
            }
        }
        
    }
    public boolean isLowerCase(char ch){
        if(ch>='a' && ch<='z')
            return true;
        return false;
    }
    public boolean isUpperCase(char ch){
        if(ch>='A' && ch<='Z')
            return true;
        return false;
    }
    
}
Java Code

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值