天梯赛第一周刷题 L1-027 出租-20分代码

题目

话不多说看题

下面是新浪微博上曾经很火的一张图:

天梯赛第一周刷题 L1-027 出租-20分代码_第1张图片

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

思路

第一个问:一开始的思路是,看到了这个题,又是一个字符串操作的题目,首先肯定是预处理出字符串里面有多少种数字,预处理出来后就对他进行排序,剩下的就是格式了,我用了STL里面的set数组,set可以自动帮我们去重,并且还能自动排序,默认从小到大, 本题是需要从大到小,因此我们修改一下就好

set> s1;

第二问:我把s1里面的每一个都映射一个下标,用unordered_map进行存储,这里的ma指的是unordered_map ma;

	i = 0;
	for(auto it = s1.begin();it!=s1.end();it++)
	{
		ma[*it] = i;
		i++;
	}

 这样之后,我们就可以对于电话号码,来一个,找一个对应的下标,然后输出就行,注意格式。完整的代码如下:

代码:

由于本蒟蒻还没有找到其他好方法,就先用set容器和unordered_map容器来解决吧

#include
#include
#include
#include
using namespace std;
set> s1;
int main()
{
	
	string s;
	cin>>s;
	unordered_map ma;
	for(int i = 0;i

set容器介绍

就利用这题,让自己熟悉一下set容器的用法吧

1、初始化和赋值

  • 空集合初始化(也是最常用):set s1;
  • 通过数组初始化:int arr[] = {1,2,3} , set s1(arr , arr + 3);
  • 拷贝初始化 set anotherSet(s2); s2是另外的set容器

2、插入和删除元素

  • 插入元素: s1.insert(1000);

  • 删除指定的元素: s1.erase(1000);

  • 删除迭代器指向的元素:s1.erase(s1.begin());

  • 清空集合:s1.clear(); 

3、访问元素:

for (auto it = mySet.begin(); it != mySet.end(); ++it) {
    std::cout << *it << ' ';
}

4、查找和计数

  • 查找元素:auto it = s1.find(3);

  • 计数元素(要么1要么0): size_t count = s1.count(3); 

5、返回集合大小

  • 元素个数:size_t size = s1.size();
  • 判断是否为空:bool isEmpty = s1.empty(); 

unordered_map容器介绍

 unordered_map 是 C++ STL(Standard Template Library)中的一个关联容器,它提供了基于键的快速查找功能。unordered_map 在内部使用哈希表来存储键值对,因此其查找、插入和删除操作的平均时间复杂度通常是 O(1)。下面是 unordered_map 的一些常用用法和特点

 1、初始化赋值

最常用的就是直接定义空的初始化

unordered_map ma;

这里记住key和value一一对应,key可以是string,也可以是int类型。深刻演绎了关联类型是什么。

2、插入和删除元素

  • 常见插入元素ma[key] = value; 
  • 也可以整个直接ma.insert(key,value);
  • 删除指定键的元素:ma.erase(key);
  • 清空映射: ma.clear();

3、查找和计数

  • 查找元素:auto it = ma.find(key);
  •  计数元素(要么0要么1):size_t count = ma.count(key);

 加油加油加油!!!

你可能感兴趣的:(week1-pta,算法,数据结构)