• 讯飞场景算法(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;
    
    	}
    
    }
    
  • 相关阅读:
    Day 29 作业/服务端实现接收客户端的连接并发
    Day 28 操作系统发展/进程
    Day 27 作业(FTP)
    Day 27 subprocess模块/粘包问题以及解决/UDP协议/socketserver
    Day 26 作业
    Day 26 互联网协议/Socket套接字
    Day 22 绑定方法和非绑定方法/isinstance/issubclass/反射/魔法方法/单例模式
    Day 21 作业
    Day 21 组合/封装/property特性/多态和多态性/抽象类/鸭子类型
    day 20 作业
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11368681.html
Copyright © 2020-2023  润新知