标签:std 输出 set 20 数字 pta 027 集合
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805107638517760;
具体思路:
根据题目要求,要先输出降序且不重复的数字元素,我们很容易想到用集合,当然,需要注意的是,在这里采用了字符串输入,在一定程度上减少了内存与时间消耗;
在者,输出第二个数组的时候,我们可以采取这样的策略:
在输出第一个集合的时候,用一个数组来记录这个集合的元素,那这样,用这个集合的元素和原来数字直接进行匹配即可,如果相同就把下标存起来,最后输出就可以了
Talk is cheap. Show me the code.
1 #include<bits/stdc++.h>//ptaL1-027 出租 2 using namespace std; 3 string s;//输入数字 4 vector<char>v1;//用来检查是否匹配,即经过set排序之后输出时再把数字存进去 5 vector<int >v2;//最后用来输出index下标 6 int main() 7 { 8 std::ios::sync_with_stdio(false); 9 set<char>::iterator it;//迭代器,相当于指针,set访问需要迭代器,map,list同 10 set<char>c;//集合,自动排序加判重 11 cin>>s; 12 for(register int i=0;i<s.length();i++) 13 { 14 c.insert(s[i]); 15 } 16 cout<<"int[] arr = new int[]{"; 17 for(it=--c.end();it!=c.begin();it--)//为了好输出少输出一个 18 { 19 cout<<*it<<","; 20 v1.push_back(*it);//入库 21 } 22 cout<<*it<<"};"<<endl;//补全 23 v1.push_back(*it); 24 for(int i=0;i<s.length();i++) 25 { 26 for(register int j=0;j<v1.size();j++) 27 { 28 if(s[i]==v1[j]) 29 { 30 v2.push_back(j);//匹配,如果相同则将下标入库等待输出 31 break;//找到相同即可,找到后停止 32 } 33 } 34 } 35 cout<<"int[] index = new int[]{"; 36 for(register int i=0;i<v2.size();i++) 37 { 38 cout<<v2[i]; 39 if(i<v2.size()-1) 40 cout<<","; 41 } 42 cout<<"};"; 43 return 0; 44 }
标签:std,输出,set,20,数字,pta,027,集合 来源: https://www.cnblogs.com/LQS-blog/p/16157322.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。