LintCode 49. 字符大小写排序

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

public class Solution {
   /*
    * @param chars: The letter array you should sort by Case
    * @return: nothing
    */
   public void sortLetters(char[] chars) {
      // write your code here
      if (chars == null || chars.length == 0) {
         return;
      }
      char standard = ('Z' + 'a') / 2;
      char[] newChars = new char[chars.length+1];
      for (int i = 0; i < newChars.length; i++) {
         if (i == 0) {
            newChars[i] = standard;
         } else {
            newChars[i] = chars[i - 1];
         }
      }
      int i = 0;
      int j = newChars.length - 1;
      while (i < j) {
         while (i < j && newChars[j] <= standard) {
            j--;
         }
         if (i < j) {
            newChars[i++] = newChars[j];
         }
         while (i < j && newChars[i] >= standard) {
            i++;
         }
         if (i < j) {
            newChars[j--] = newChars[i];
         }
         newChars[i] = standard;
      }
      for (int k = 0; k < chars.length; k++) {
         if (k < i) {
            chars[k] = newChars[k];
         } else {
            chars[k] = newChars[k+1];
         }
      }
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值