文章

211

粉丝

0

获赞

1047

访问

35.2k

头像
字符串排序2 题解:
P1255 北京大学机试题
发布于2026年3月15日 19:02
阅读数 147

#include <bits/stdc++.h>
using namespace std;
//排序“不区分大小写”
bool cmp(char a,char b){
    if(a >= 'A' && a <= 'Z')
        a+=32;
    if(b >= 'A' && b <= 'Z')
        b+=32;
    return a < b;
}
int main(){
string line;
    while(getline(cin,line)){
		//先提取所有字母,存到 str
        string str;
        for(char i : line){
            if((i >= 'a' && i <= 'z') || (i >= 'A' && i <= 'Z')) 
				str += i;
        }
		//对字母串排序:按“不区分大小写的字典序”
        stable_sort(str.begin(),str.end(),cmp);
		//把排序后的字母“填回去”,非字母字符留在原位
        int temp = 0;
        for(int i = 0; i < line.size(); i++){
            if((line[i] >= 'a' && line[i] <= 'z') || (line[i] >= 'A' && line[i] <= 'Z'))
                cout << str[temp++];
            else
                cout << line[i];
        }
        cout << endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发