题解 | #字符串排序#

字符串排序

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

//这个是典型的桶排序
//通过getValue()函数将字符'a-z','A-Z'==>0-25。将输入的字符串分到对应的桶。最后一一返回。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int getValue(char ch) {
    int value = (int)ch;
    if (value >= (int)'A' && value <= (int)'Z') {
        value -= (int)'A';
    }
    if (value >= (int)'a' && value <= (int)'z') {
        value -= (int)'a';
    }
    return value;
}
int main() {
    string input;
    while (getline(cin, input)) {
        vector<int> index;
        vector<vector<char>> v(26);
        for (int i = 0; i < input.size(); i++) {
            int a = (int)input[i];
            if ((a >= (int)'A' && a <= (int)'Z') ||
                    (a >= (int)'a' && a <= (int)'z')) {
                index.push_back(i);
                int x=getValue(input[i]);
                v[x].push_back(input[i]);
            }
        }
        string str;
        for(auto & i : v){
            for(char j : i){
                str+=j;
            }
        }
        for(int i=0;i<index.size();i++){
            input[index[i]]=str[i];
        }
        cout << input << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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