L1-027 出租(Java语言)-天梯赛

🏅前言:

代码含详细注释及解题思路。若有不理解的地方,欢迎大家探讨交流,有问必回📖

L1-027 出租(Java语言)-天梯赛

下面是新浪微博上曾经很火的一张图:
在这里插入图片描述

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,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};

🎯解题思路:

🦀大体方向是:计算出数据
int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};
存入两个数组中,再想办法按要求格式打印出来
🎇第一行数据存储:输入样例拿字符串存储,利用TreeSet集合去重并实现升序{0,1,2,3,8},再把TreeSet转成Arraylist集合利用Cellction工具类reverse方法实现逆序变成降序{8,3,2,1,0}
🎇第二行数据存储:定义一个临时变量index,取代for循环中对应的{3,0,4,3,1,0,2,4,3,4,4}值,
🎀使用两个缓冲数组在for循环中进行拼接即可

🎯题解:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a=sc.next();//获取电话号码
        TreeSet aa = new TreeSet();
        for (int i = 0; i <a.length(); i++) {
            aa.add(a.charAt(i));//电话号码去重后得arr并按升序排列
        }
        ArrayList arr=new ArrayList(aa);//将去重后数字存入list集合中
        Collections.reverse(arr);//逆序排列,从升序变成降序
        StringBuffer a1=new StringBuffer("int[] arr = new int[]{");
        StringBuffer a2=new StringBuffer("int[] index = new int[]{");
        for (int i = 0; i <11 ; i++) {
            if(i<arr.size()){//第一行所有信息拼接到缓冲字符串a1中
                if(i==0){
                    a1.append(arr.get(i));
                    if(arr.size()==1){//以防电话号码是11111111111【全是相同数字】
                        a1.append("};");
                    }
                }else{
                    a1.append(","+arr.get(i));
                    if(i==arr.size()-1){
                        a1.append("};");
                    }
                }
            }
           int index=(arr.indexOf(a.charAt(i)));//获取电话号码在arr去重数组对应的下标存入临时变量Index中
            if(i==0){//第二行所有信息拼接到缓冲字符串a2中
                a2.append(index);
            }else {
                a2.append(","+index);
                if(i==10){
                    a2.append("};");
                }
            }
        }
        System.out.println(a1+"\n"+a2);
    }
}

🐒结果:在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值