题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

c++map容器

算法思路

首先构造一个map<int ,vector>容器。然后按顺序遍历字符串,大写的字母以'A'为标准添加到对应下标的vector中;小写的字母以'a'为标准添加到对应下标的vector中;与此同时添加一个辅助队列添加对应的下标。之后将map中的字母按照下标(此时排好序)转成一维vector。最后将对应的字符串下标与排好序的字母序列一一对应

具体算法实现

using namespace std;
//获取字母并对其排序,以及存取其下标
typedef vector<char>V;
int main(){
    string s;
    getline(cin,s);
    map<int,V>m;
    //存取下标
    vector<int>vi;  
    vector<char>vc;   
    for(int i=0;i<s.size();i++){
        if(('a'<=s[i]&&s[i]<='z')){
            m[s[i]-'a'].push_back(s[i]);
            vi.push_back(i);
        }if('A'<=s[i]&&s[i]<='Z'){
            m[s[i]-'A'].push_back(s[i]);
            vi.push_back(i);
        }
    }
    //将二维数组转成一维
    for(int i=0;i<26;i++){
         for(int j=0;j<m[i].size();j++)vc.push_back(m[i][j]);
    };
    for(int i=0;i<vi.size();i++){
        s[vi[i]]=vc[i];
    }
    cout<<s<<endl;
    
    return 0;
}
全部评论

相关推荐

在下uptown:山东的哥们得好好回答 第一问题,专业技能太少了,现在写的大部分都是模型迭代过渡期的技术栈,说白了今天用明天可能就不用,多补一些看家的本事 第二个问题,项目偏学术学习体现不出工程能力,deepresearch核心在于模型自我反馈自我纠正,没体现出来,RAG本身在落地应用上就是个伪命题。 再有就是,有实习经历可以弥补学历不足,建议放到学历下面,别人筛简历可能第一眼觉得学校不过关,但第二眼有实习经历,就给你面试了,藏到后面可能就没有第二眼了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务