Java教程

pta L1-027 出租 (20 分)

本文主要是介绍pta L1-027 出租 (20 分),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目链接: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 }

 

这篇关于pta L1-027 出租 (20 分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!