#include<iostream> #include<set> #include<string> #include<vector> #include<algorithm> using namespace std;  bool cmpa(vector<int>& a, vector<int>& b) { if (a[0] < b[0]) return true; else if (a[0] > b[0]) return false; else { if (a[1]<b[1]) return true; else return false; } } vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(intervals.begin(), intervals.end(), cmpa); vector<vector<int>> res; for (int i = 0; i < intervals.size(); i++) { int size = res.size(); if (res.empty() || res[size - 1][1]<intervals[i][0]) res.push_back(intervals[i]); else res[size - 1][1] = max(intervals[i][1], res[size - 1][1]); } return res; } int main() { string in; cin >> in; int len = in.size(); set<char> se; vector<vector<int>> arr; for (int i = 0; i < len;i++) { if (se.find(in[i]) == se.end()) { int first = in.find_first_of(in[i]); int end1 = in.find_last_of(in[i]); se.insert(in[i]);  vector<int > temp; temp.push_back(first); temp.push_back(end1); arr.push_back(temp); } } vector<vector<int>>  res = merge(arr); for (int i = 0; i < res.size(); i++) { if (i == (res.size() - 1))cout << res[i][1] - res[i][0] + 1<<endl; else cout << res[i][1] - res[i][0] + 1 << ","; } system("pause"); return 0; }
点赞 1

相关推荐

点赞 评论 收藏
转发
牛客网
牛客企业服务