• 字符串数组及链表的应用:例题


    第一题:

    import java.util.Arrays;
    import java.util.Scanner;
    /**
     * 描述
    HEIHEI非常喜欢吃花生,他每天都会吃一些花生,心情好的话会吃的比较多。
    现在已经知道,HEIHEI从周一到周日的心情值递增的,也就是说周一吃的花生最少,周日吃的花生最多。
    现在给你7个数表示有7堆花生,顺序是打乱的,HEIHEI每天吃的花生数都在这7个数中,现在告诉你今天周几,请你告诉HEIHEI他今天应该吃多少花生。
    例如花生数有“1 2 5 4 6 7 3”,输入“Monday”,星期一就应该输出1,如果输入“Thursday”,周四的话应该吃4个,输出4.
     * 输入
    第二行有7个数分别表示这一周内每一天的花生数。
    第三行有一个字符串,表示周几(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)。
     * 输出
    输出一个数,表示这一天应该吃的花生数。
     */
    public class Chihuasheng {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            String str1=sc.nextLine();//
            String str2=sc.next();
            String[] strs1=str1.split(" ");
            int[] ins=new int[strs1.length];//将输入的字符串数组转化为整数数组
            for(int i=0;i<strs1.length;i++){
                ins[i]=Integer.parseInt(strs1[i]);//为整数数组赋值
            }
            Arrays.sort(ins);//排序
            String[] strs2=new String[]{"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
            for(int i=0;i<strs2.length;i++){
                if(str2.equals(strs2[i])){//如果输入的周几与字符串中相等,那么将该日期在字符串数组中的索引提取出来,输出整数数组的该索引
                    System.out.println(ins[i]);
                }
            }
        }
    }

    第二题:

    import java.util.ArrayList;
    import java.util.Scanner;
    /*
     * 描述
    现在给你两堆数,每个堆中有n个数。你的任务是把这两个堆并成一个堆,并把合并后的堆中的元素按从小到大的顺序输出。
    例如当n=5时,第一个堆是{1,2,3,4,5},第二个堆是{5,6,7,8,9},那么你就应该输出1 2 3 4 5 6 7 8 9。(一堆中可能有重复的数)
     * 输入
    第一行输入一个整数T(1≤T≤100),表示有T组测试数据。
    每组数据先输入一个整数N(1≤N≤10),表示每个堆中元素的个数。然后输入N个整数A(0≤A<100),最后输入N个整数B(0≤B<100)。
     * 输出
    把合并后的堆中的元素按从小到大的顺序输出。
     */
    public class Hebing {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            ArrayList<Integer> aa=new ArrayList<Integer>();
            String str1=md();
            String str2=md();
            String[] str1s=str1.split(" ");
            String[] str2s=str2.split(" ");
            for(int i=0;i<str1s.length;i++){
                aa.add(Integer.parseInt(str1s[i]));
            }
            for(int i=0;i<str2s.length;i++){
                if(aa.contains(Integer.parseInt(str2s[i]))){
                    
                }else{
                    aa.add(Integer.parseInt(str2s[i]));
                }
            }
            aa.sort(null);
            for(int i=0;i<aa.size();i++){
                System.out.print(aa.get(i)+" ");
            }
        }
        public static String md(){
            Scanner sc=new Scanner(System.in);
            String str=sc.nextLine();
            return str;
        }
    }

    第三题:

    import java.util.ArrayList;
    import java.util.Scanner;
    /**
     * 描述:
    输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
    (如果这个第一个数就是最小的数,则保持原样输出,如果最小的数有相同的按照前面的交换)
     * 输入:
    输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
     * 输出:
    对于每组输入数据,输出交换后的数列,每组输出占一行。
     */
    class D{
        int[] md(String str){
            String[] strs=str.split(" ");
            
            ArrayList<Integer> aa=new ArrayList<Integer>();
            for(int i=1;i<strs.length;i++){
                aa.add(Integer.parseInt(strs[i]));
            }
            int min=aa.get(aa.size()-1);
            for(int n=0;n<aa.size();n++){
                if(aa.get(n)<min){
                    min=aa.get(n);
                }
            }
            aa.set(aa.indexOf(min), aa.get(0));
            aa.set(0, min);
            
            int[] ins=new int[aa.size()];
            for(int i=0;i<aa.size();i++){
                ins[i]=aa.get(i);
            }
            return ins;
        }
    }
    
    public class Jiaohuanshuchu {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            String str=sc.nextLine();
            D d=new D();
            int[] ins=new int[d.md(str).length];
            for(int i=0;i<ins.length;i++){
                ins[i]=d.md(str)[i];
            }
            for(int i=0;i<ins.length;i++){
                System.out.print(ins[i]+" ");
            }
        }
    }

    第四题:

    import java.util.ArrayList;
    import java.util.Scanner;
    
    /**
     * 描述:
    给定一行字符,逆序输出此行(空格.数字不输出)
     * 输入:
    数据中间有且只有一个空格(这样你可以把此行当成两个字符串读取)。
    每行字符长度不超过40
    并且保证输入的字符只有空格(1个),数字,小写字母三种
     * 输出:
    对应每行测试数据,逆序输出(空格和数字不输出)
     */
    
    class A{
        String md(char[] chs){
            ArrayList<String> aa=new ArrayList<String>();
            for(int i=0;i<chs.length;i++){
                if(chs[i]>='a'&&chs[i]<='z'){//将字符串数组里小写字母添加到新的链表当中
                    aa.add(chs[i]+"");
                }
            }
            String str="";
            for(int i=aa.size()-1;i>=0;i--){
                str+=aa.get(i);//逆序输出
            }
            return str;
        };
    }
    
    public class Nixushuchu {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            String str=sc.nextLine();
            char[] chs=str.toCharArray();//将输入的字符串转化成字符数组
            A a=new A();
            System.out.println(a.md(chs));
        }
    }

    第五题:

    import java.util.ArrayList;
    import java.util.Scanner;
    
    /*
     * 描述:有一只母乌龟 ,它每年年初生一头小母乌龟 。每头小母乌龟 从第四个年头开始,每年年初生一头小母乌龟 。
     * 请你计算第n年是共有多少只母乌龟 (第一年是有一头母乌龟)
     * 
     * 输入:输入多组测试数据,每组测试数据占一行,输入一个整数n(0<n<56)n含义如题所示,n=0是表示输入结束
     * 
     * 输出:每组输出数据占一行,输出第在第n年的时候母乌龟的数量。
     */
    
    public class Shuwugui {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            int num=0;
            if(n==0){
                
            }
            ArrayList<Integer> aa=new ArrayList<Integer>();
            
            if(n>56){//不能大于56,如果大于就重新输入
                n=sc.nextInt();
            }else if(n>=4&& n<=56){
                for(int i=1;i<=n;i++){
                    if(i<=3){
                        num=i;
                    }else{
                        //根据规律,第n年的数量等于第n-3年加n-1年的数量,由于链表第一个是从0开始,所以get(i-4)+get(i-2)
                        num=aa.get(i-4)+aa.get(i-2);
                    }
                    aa.add(num);//每一次把num添加到链表
                }
                System.out.println(num);
            }else if(n>0&&n<4){
                num=n;//前三年没有规律,第几年就有几只乌龟
                System.out.println(num);
            }else{
                System.out.println("输入结束");//输入0表示输入结束
            }    
        }
    }
  • 相关阅读:
    spring 09-Spring框架基于QuartZ实现调度任务
    spring 08-Spring框架Resource资源注入
    spring 07-Spring框架Resource读取不同资源
    spring 06-Spring框架基于Annotation的依赖注入配置
    html 默认跳转
    poi 设置样式
    支付宝扫码支付回调验证签名
    构造器初始化
    cxf webservice
    CSS3 border-image 属性
  • 原文地址:https://www.cnblogs.com/FrankLiner/p/7718507.html
Copyright © 2020-2023  润新知