49 字符大小写排序

原题网址:https://www.lintcode.com/problem/sort-letters-by-case/description

描述

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

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

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

样例

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

挑战

在原地扫描一遍完成

标签
排序
两根指针
字符串处理
LintCode 版权所有
 
思路:
参照插入排序法,设置两根指针i、j,一个指向左侧调整好的小写字母区末位的下一个位置,另一个指向待处理区域的第一个元素。
如果待处理元素为小写字母,将其放到 i 处,i 处元素放到 j 处,i 向右移动一位,j 向右移动一位。
如果待处理元素不为小写字母,继续处理下一位,即 i 不动,j 向右移动一位。
 
AC代码:
class Solution {
public:
    /*
     * @param chars: The letter array you should sort by Case
     * @return: nothing
     */
    void sortLetters(string &chars) {
        // write your code here
         int n=chars.size();
     int i=0;//小写字母区末位的下一个位置;
     for (int j=0;j<n;j++)
     {
         if (chars[j]>='a'&&chars[j]<='z')
         {
             swap(chars[i],chars[j]);
             i++;
         }
     }
    }
};

 其他方法:

https://blog.csdn.net/lyy_hit/article/details/49403791

转载于:https://www.cnblogs.com/Tang-tangt/p/9102376.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值