Java的基础算法(一)
一、输入一个字符串,判断是否为回文,回文就是从左往右读跟从右往左读是一样的,如:abcba;
主要思路:
1.从键盘上输入字符串;
2.将利用循环,判断字符串第一个与倒数第一个是否一样,第二个与倒数第二个是否一样,以此类推,循环字符串长度的一半;
方法一:
Scanner sn=new Scanner(System.in); System.out.println("please enter you char :"); String str=sn.nextLine(); int count=0; int length=str.length(); for (int i = 0; i < length/2; i++) { if(str.charAt(i)==str.charAt(length-i-1)){ count++; } } if(count==length/2){ System.out.println("the char is huiwen"); }else{ System.out.println("the char isnt huiwen"); }
方法二:
Scanner sn=new Scanner(System.in); System.out.println("please enter you char :"); String str=sn.nextLine(); StringBuffer sb=new StringBuffer(str); sb.reverse(); int count=0; int length= str.length(); for (int i = 0; i <length/2 ; i++) { if(str.charAt(i)==sb.charAt(i)){ count++; } } if(count==length/2){ System.out.println("the char is huiwen"); }else{ System.out.println("the char isnt huiwen"); }这里也可直接判断str.equals(sb); 因为reverse()方法可以翻转字符串,与回文是一样的道理;
执行结果:
二、输入一个整形数组,找出数组中第二大的数;
主要实现方式:
1.从键盘输入数组;
[1 ] 创建一个字符串获取输入的值;
[2 ] 创建一个字符串数组,将字符串用空格隔开放入数组中;
[3 ] 创建整形数组,长度为字符串数组的长度;
[4 ] 循环字符串数组,将元素类型转换放入整形数组中;
2.创建两个参数令他们等于数组的第一个数,然后循环数组,判断第一大的 数和第二大的数,下列代码就能很直观的看出来了;
System.out.println("请输入整形数组:"); sn = new Scanner(System.in); String m=sn.nextLine(); String [] arry=m.split(" "); int [] a=new int[arry.length]; for (int i = 0; i < arry.length; i++) { a[i]=Integer.parseInt(arry[i]); } //判断第一大的数,和第二大的数 int max_second; int max=max_second=a[0]; for (int i = 1; i < a.length; i++) { if(a[i]>max_second){ if(a[i]>max){ max_second=max; max=a[i]; }else{ max_second=a[i]; } } } System.out.println("max_second = "+max_second+" "+"max = "+max);执行结果:
三、输入一个数n然后求n!;
利用返回值的方式,相当于做for循环求阶乘;
public static long fac(int num){ if(num<=0){ return 0; } if(num==1){ return 1; } return num*fac(num-1); }
四、有四个数字1,2,3,4 求出他们排列组合出的几个不相同的四位数;
int i ,j ,k,l; int n=0; for (i = 1; i<=4; i++) { for (j = 1; j<= 4; j++) { for (k = 1; k<= 4; k++) { for(l=1;l<=4;l++){ if(i!=j&&j!=k&&k!=i&&j!=l&&i!=l&&k!=l){ n++; System.out.println(""+i+""+j+""+k+""+l); } } } } } System.out.println("num = "+n);
五、统计文章里不同的单词数,然后输出单词数的多少;
ArrayList<Integer> countLists=new ArrayList<Integer>(); int count; HashMap<String, String> m; String str; String[] a; System.out.println("请输入要检索的文章:"); Scanner sc=new Scanner(System.in); while(!(str=sc.nextLine()).equals("#")){ a=str.split(" "); m=new HashMap<String,String>(); count=0; for (int i = 0; i <a.length; i++) { if(!m.containsKey(a[i])&&(!a[i].equals(" "))){ m.put(a[i], ""+count); count++; } countLists.add(count); } System.out.println(count); }