题解 | #字符串排序#
字符串排序
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;
}
安克创新 Anker公司福利 716人发布


查看4道真题和解析