用C++实现:题目描述 有两个纯粹由数字组成的字符串s1,s2,将s1串中的数字进行从大到小排列,s2串中的数字从小到大排列,求排列后s1-s2的值(s1转换为数字时大于0) 输入 输入2行数字字符串数据,分别代表s1,s2; 如: 213 21 (排列后 s1的值是321 ; s2的值是12 ;) 输出 s1-s2的值 如: 309 (根据上面输入的示例,计算结果为321-12=309)
时间: 2024-02-12 14:05:02 浏览: 109
c++设计实现一个"字符串类",要求系统设计具有一定弹性和可扩展性,使得后续维护和扩展功能更容易,增加或修改系统功能变得更简单。
5星 · 资源好评率100%
以下是用C++实现的代码:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s1, s2;
cin >> s1 >> s2;
// 对s1进行从大到小排序
sort(s1.rbegin(), s1.rend());
// 对s2进行从小到大排序
sort(s2.begin(), s2.end());
// 将排好序的字符串转换为数字,计算差值
int n1 = stoi(s1), n2 = stoi(s2);
int diff = n1 - n2;
cout << diff << endl;
return 0;
}
```
首先读入两个字符串s1和s2,然后分别对它们进行排序。对于s1,我们使用sort函数和反向迭代器rbegin()和rend()来实现从大到小排序;对于s2,我们使用sort函数和正向迭代器begin()和end()来实现从小到大排序。排序完成后,将两个排好序的字符串转换为数字,并计算它们的差值,最后输出结果。
需要注意的是,在将字符串转换为数字时,我们使用了stoi函数,它能够将一个字符串转换为整数类型。如果s1中的数字前缀有0,则stoi函数会自动忽略这些前导0。
阅读全文