C++语言,输入5个字符串,创建一个string数组,用于获取5个输入字符串,输出5个字符串中包含数字最多的字符串与长度最长的字符串(不考虑出现并列第一的情况)
时间: 2024-09-06 16:05:14 浏览: 88
C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析
在C++中,为了实现这个功能,我们可以创建一个`std::vector<std::string>`来存储用户输入的5个字符串。首先,我们需要遍历输入,统计每个字符串中的数字数量和字符数。然后,我们可以用两个变量分别跟踪最多数字的字符串和最长的字符串。
这是一个可能的实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
struct StringComparator {
bool operator()(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) const {
if (a.second > b.second) {
return true;
} else if (a.second == b.second && a.first.size() > b.first.size()) {
return true;
}
return false;
}
};
void findMaxNumbersAndLength(const std::vector<std::string>& strings) {
std::vector<std::pair<std::string, int>> stats(strings.size());
for (size_t i = 0; i < strings.size(); ++i) {
stats[i].first = strings[i];
stats[i].second = count如果(strings[i].begin(), strings[i].end(), '0') + count如果(strings[i].begin(), strings[i].end(), '1') + ... // 计算数字数量
// 可能需要根据实际需要替换为对应的字符计数
}
auto maxNumStr = *max_element(stats.begin(), stats.end(), StringComparator());
auto maxLengthStr = *std::max_element(std::execution::par, stats.begin(), stats.end(),
[](const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) -> bool {
return a.first.size() > b.first.size();
});
std::cout << "包含数字最多的字符串是: " << maxNumStr.first << ",长度为: " << maxNumStr.second << std::endl;
std::cout << "长度最长的字符串是: " << maxLengthStr.first << ",长度为: " << maxLengthStr.second << std::endl;
}
int main() {
std::vector<std::string> inputStrings = {"abc123", "def456", "ghi789", "jkl0", "mno1234"};
findMaxNumbersAndLength(inputStrings);
return 0;
}
```
注意这里假设了“最多数字”的比较只针对数字。如果需要考虑其他类型的字符,你需要修改计算数字数量的部分。另外,对于并列的第一名,上述代码仅保留最长的那个字符串,如果需要同时显示所有条件都满足的字符串,则需要稍作调整。
阅读全文