前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PTA刷题记录:L1-027 出租 (20分)

PTA刷题记录:L1-027 出租 (20分)

作者头像
英雄爱吃土豆片
发布2020-11-12 10:42:15
7130
发布2020-11-12 10:42:15
举报

L1-027 出租 (20分)

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

在这里插入图片描述
在这里插入图片描述

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[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};

解题思路: set 容器去重。字符型与整型数据之间的转换。

通关代码:

#include <iostream>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

int getAt(vector<int> arr, int val) {
	int at;

	for (int i = 0; i < arr.size(); i++) {
		if (arr[i] == val) {
			at = i;
			break;
		}
	}

	return at;
}

int main() {
	set<int> cup;
	vector<int> num;
	string phone;

	cin >> phone;

	for (int i = 0; i < phone.size(); i++) {
		cup.insert(phone[i] - '0');
	}

	for (set<int>::iterator p = cup.begin(); p != cup.end(); p++) {
		num.push_back(*p);
	}

	reverse(num.begin(), num.end());

	bool isFirst = true;

	cout << "int[] arr = new int[]{";
	for (int i = 0; i < num.size(); i++) {
		if (isFirst) {
			cout << num[i];
			isFirst = !isFirst;
		} else {
			cout << ',' << num[i];
		}
	}
	cout << "};" << endl;
	
	isFirst = true;

	cout << "int[] index = new int[]{";
	for (int i = 0; i < phone.size(); i++) {
		if (isFirst) {
			cout << getAt(num, phone[i] - '0');
			isFirst = !isFirst;
		} else {
			cout << ',' << getAt(num, phone[i] - '0');
		}
	}
	cout << "};" << endl;
	
	return 0;
}

通关截图:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • L1-027 出租 (20分)
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档