题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

避坑点:
1.vector需要初始化元素个数,否则下面的for循环导致栈溢出;
2.冒泡法排序中数据交换条件是:前一个数“大于”后一个数,这里“大于”需要逐字符比较得出;
3.比较判断函数cmp()中,当"abc"、"ab"会交换吗?答:需要,这里需要将字符个数较少的放前面。

#include <iostream>
#include <vector>
using namespace std;

bool cmp(string a, string b){
    int si***(a.size(), b.size());
    for(int i = 0; i < size; i++){
        if(a[i] > b [i])
            return true;
        else if(a[i] == b [i])
            continue;
        else
            return false;
    }
    if(a.size() == size)
        return false;
    else
        return true;
}

void sort(int num, vector<string>& vec){
    for(int i = 0; i < num; i++){
        for(int j = 0; j < num - i -1; j++){
            if(cmp(vec[j], vec[j+1])){
                string tmp;
                tmp = vec[j+1];
                vec[j+1] = vec[j];
                vec[j] = tmp;
            }
        }
    }
}

int main(){
    int num;
    //string str;
    while(cin >> num){
        vector<string> vec(num);
        for(int i = 0; i < num; i++) cin >> vec[i];
        sort(num, vec);
        for(string x : vec) cout << x << endl;
    }
    return 0;
}
全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务