字符串及链表的应用:例题
Posted IToIT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串及链表的应用:例题相关的知识,希望对你有一定的参考价值。
第一题:
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表示输入结束 } } }
以上是关于字符串及链表的应用:例题的主要内容,如果未能解决你的问题,请参考以下文章