讯飞场景算法(Java实现)

<一>找数字

题目描述:

    在给定的一串字符串中找出数字,并且按照升序排列。

样例输入:

  “我的天1456ndeno6265”;

样例输出:

 12455666

代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main2 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String str = in.next();
        
        List<Integer> list = new ArrayList<>();
        
        for(int i = 0;i < str.length();i++){
            char ch = str.charAt(i);
            if(ch >= '0' && ch <= '9') {
            	list.add(Integer.valueOf(String.valueOf(ch)));
            }
        }
        Collections.sort(list);
        for(Integer inte : list) {
        	System.out.print(inte);
        }
        if(list.size() == 0) {
        	System.out.print(-1);
        }
	}

}

 <二>二分查找

题目描述:给定一个有序的数组,用递归的二分查找算法找到其中的一个值,若有这个值输出它的下标,若没有则输出-1。

样例输入;

  {11 15 18  19 26 54 87}  找19

样例输出:

  true

代码如下:

import java.util.Scanner;

public class Main3 {

	public static void main(String[] args) {
		
		   Scanner scanner = new Scanner(System.in);
		   
		   int N = scanner.nextInt();
	       String  str = scanner.next();
	        
	        str = str.substring(1,str.length()-1); //去掉{};
	        String[] split = str.split(",");
	        
	        int[] arrInt = new int[split.length];
	        for (int i = 0; i < split.length; i++) {
	            arrInt[i] = Integer.valueOf(split[i]);
	        }
	        System.out.println(search(arrInt,0,arrInt.length-1,N)+1);
	    }

	    public static int search(int[] array,int start,int end,int n){
	        if(end==start){
	            return array[end]==n?end:-1;
	        }
	        int mid = (end+start)/2;
	        if(array[mid]>n){
	            int nend = mid-1;
	            nend = nend<0?0:nend;
	            return search(array,start,nend,n);
	        }
	        if(array[mid]<n){
	            return search(array,mid+1,end,n);
	        }
	        if(array[mid]==n){
	            return mid;
	        }

	        return -1;

	}

}

 

posted @ 2019-08-17 15:06  离愁i  阅读(271)  评论(0编辑  收藏  举报