PAT团队程序设计天梯赛-习题集L1-027 出租

题目要求

题目分析

题目输入一个手机号码,手机号码是11位数,用字符串表示。

程序读入了一个字符串,利用循环遍历每一个字符,然后利用set集合的性质,自动去除重复的元素;

保存在集合当中的元素复制到数组当中,然后利用数组的自动排序功能实现降序排序。

读到的字符减去一个字符零,然后就是字符表示的数字本身。

遍历原本电话号码的元素保存在一个新的数组当中,用嵌套循环,遍历这个数组的同时再遍历保存字母的数组,匹配一个,保存一个下标。

示例代码

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class L1_027 {
	public static void main(String[] args) {
		//以字符串的形式读入电话号码
		Scanner sc = new Scanner(System.in);
		String phoneNumber = sc.nextLine();
		sc.close();
		//定义一个集合类,用来存储电话号码中新出现的字符,用集合自动去重
		Set<Integer> set = new HashSet<Integer>();
		for(int i = 0; i < 11; i++) {
			//存储的时候,减去一个字符零,这样再转换成  int 的时候就是数字本身
			set.add(phoneNumber.charAt(i) - '0');
		}
		//迭代器,用来遍历集合
		Iterator<Integer> it = set.iterator();
		//数组,数组大小是集合的大小
		int[] arr = new int[set.size()];
		int i = 0;
		while(it.hasNext()) {
			//遍历集合,将元素赋值到数组当中
			arr[i] = it.next();
			i++;
		}
		//利用数组的性质实现自动排序
		Arrays.sort(arr);
		int[] arr_to = new int[arr.length];
		//输出数组
		System.out.print("int[] arr = new int[]{");
		for(int k = arr.length - 1; k >= 0; k--) {
			//新数组保存数字元素
			arr_to[Math.abs((k - arr.length + 1))] = arr[k];
			if(k == 0) {
				System.out.print(arr[k] + "};");
			}else {
				System.out.print(arr[k] + ",");
			}
		}
		System.out.println();
		System.out.print("int[] index = new int[]{");
		for(int m = 0; m < 11; m++) {
			for(int index = 0; index < arr.length; index++) {
				//找到手机号码中的数字的下标
				if((phoneNumber.charAt(m) - '0') == arr_to[index]) {
					if(m == 10) {
						System.out.print(index + "};");
					}else {
						System.out.print(index + ",");
					}
				}
			}
		}
		
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值