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 isn't 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 isn't 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+"\n"+"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);	
		}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值