力扣1370上升下降字符串记录


原题链接


上升下降字符串

一、题目描述

在这里插入图片描述

二、做题学习。

这一题,难度属于简单,但是我写的那玩意太垃圾了,最后学习了下官方的题解。官方的题解用到了桶排序的思想,就是把建立一个计数数组count[26],这个每一个元素的值就是字符串内字母出现的个数(一开始统一设置为0)。这样的话,我们从小到大找字符,和从大到小找字符直接通过遍历一遍数组来得到结果。其中每遍历一次数组,都要把得到的字符加入到结果字符串中resultstring中,同时,该元素个数减一,对应题目中的移除元素。外层设置一个循环,判断条件为结果字符串是否与原字符串长度相等,即是否所有的字符都用上了。都用上了,那么新的字符串也就生成了。
代码如下:

class Solution {
public:
    string sortString(string s) {
        int count[26];
        memset(count,0,sizeof(count));
        int length=s.size();
        int temp;
        for(int i=0;i<length;i++){
            temp = s[i]-'a';
            count[temp]++;
        }
        string resultstring;
        while(resultstring.size()!=length){
             for(int i=0;i<26;i++){
            if(count[i]>0){
                resultstring.push_back('a'+i);
                count[i]--;
            }
        }
        for(int i=25;i>=0;i--){
            if(count[i]>0){
                resultstring.push_back('a'+i);
                count[i]--;
            }
        }
        }
        return resultstring;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值