📅  最后修改于: 2023-12-03 14:54:41.422000             🧑  作者: Mango
本文介绍如何按照字符串的长度和字母顺序对字符串进行排序。本代码以C++为实现语言,使用STL中的vector和sort函数实现。
首先我们需要定义一个结构体,用来存储字符串和长度的信息。
struct StringInfo {
std::string str;
int length;
};
使用vector存储字符串信息。
std::vector<StringInfo> strings; // 定义字符串列表
std::string input; // 定义输入变量
while (std::getline(std::cin, input)) { // 获取输入直到结束
strings.push_back({input, input.length()}); // 将字符串和长度存储到vector中
}
定义排序函数,按照长度和字母顺序进行排序。
bool cmp(StringInfo a, StringInfo b) {
if (a.length != b.length) { // 长度不一致,按长度升序排序
return a.length < b.length;
} else { // 长度一致,按字母序升序排序
return a.str < b.str;
}
}
使用sort函数进行排序。
std::sort(strings.begin(), strings.end(), cmp); // 排序
输出排序结果。
for (StringInfo si : strings) {
std::cout << si.str << std::endl; // 输出字符串
}
#include <iostream>
#include <vector>
#include <algorithm>
struct StringInfo {
std::string str;
int length;
};
bool cmp(StringInfo a, StringInfo b) {
if (a.length != b.length) {
return a.length < b.length;
} else {
return a.str < b.str;
}
}
int main() {
std::vector<StringInfo> strings;
std::string input;
while (std::getline(std::cin, input)) {
strings.push_back({input, input.length()});
}
std::sort(strings.begin(), strings.end(), cmp);
for (StringInfo si : strings) {
std::cout << si.str << std::endl;
}
return 0;
}
本文介绍了如何按照字符串的长度和字母顺序对字符串进行排序,使用的是C++中的vector和sort函数。对于字符串按照任意规则排序,可以根据需求自定义排序函数进行实现。