解析:
注意单个数的情况
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
set<int>p;
int f(string s){
int sum=0;
for(int i=0;i<s.size();i++){
sum=sum*10+(s[i]-'0');
}
// cout<<sum<<endl;
return sum;
}
int main(){
string s;
cin>>s;
int r=1;
if(s.find(",")==-1) p.insert(f(s));
for(int i=0;i<s.size();i++){
if(s[i]==','){
if(r){
p.insert(f(s.substr(0,i)));
r=0;
}
int j=i+1;
for(;j<s.size();j++){
if(s[j]==',') break;
}
p.insert(f(s.substr(i+1,j-i-1)));
}
}
int v=*(p.begin()),u=*(p.begin()),w=1;
p.insert(1002);
for(auto it:p){
if(it==v+1||it==v){
v=it;
}
else{
if(w) w=0;
else cout<<",";
if(u==v){
printf("%d",u);
}
else
printf("%d-%d",u,v);
v=u=it;
}
}
return 0;
}
// 1,2,4,5,6,7,999,1000