• 面试题编程题整理(更新中)


    博主说两句,博主大三在校生,最近面试积累了很多的题目,于是准备整理一下 尽管可能不是最优解
    注: 以下所有的代码均 通过了牛客网的测试 
    [编程题01] 整数反转

    时间限制:1秒

    空间限制:131072K

    输入一个有符号整数,输出该整数的反转值。

    输入描述:
    一个整数


    输出描述:
    一个整数

    输入例子1:
    123

    输出例子1:
    321

    输入例子2:
    -123

    输出例子2:
    -321

    输入例子3:
    200

    输出例子3:
    2
    方法一
    public static int reverse2(int x) {
    		//x 小于0 则返回 -x 否则返回 x
    		int tmp = x < 0?-x:x;
    		//给一个变量 用来存结果
    		long reverse=0;
    		//结束条件是 输入的数已经是最后一个
    		while (tmp>0) {
    			//每次reverse的数往高位移动一位  tmp每次取模拿到最后一位
    			reverse=reverse*10 + tmp%10;
    			if(reverse>Integer.MAX_VALUE) {
    				return 0;
    			}
    			//然后tmp每次往低位一位
    			tmp=tmp/10;
    		}
    		//最后判断输入时的符号来给出最终的符号
    		return (int)(x < 0? -reverse:reverse);
    
    	}  
    方法二
    import java.util.Scanner;
    
    /**
    * 字符串进行处理 * method two * @author shundong * */ public class Mian { public static void main(String[] args) { Scanner in = new Scanner(System.in); //System.err.println("请输入一个需要反转的整数"); long inStr = in.nextInt(); if (inStr<10&inStr>-10) { System.out.println(inStr); return; } String tmp = inStr <0? -inStr+"":inStr+"";//int 转STRING 且必正 if (inStr<0) { System.out.print("-"); } for(int i = tmp.length()-1;i>=0;i--) { if(tmp.charAt(i)-48!=0) { System.out.print(tmp.charAt(i)); } } } }
    [编程题02] 计算 1+2-3+4-5+6-7+8-9...+n 输入n 输出结果
    package com.shundongAlgorithmProblem;
    
    import java.util.Scanner;
    
    /**
     * 计算 1+2-3+4-5+6-7+8-9+...+n
     * @author shundong
     *
     */
    public class Code_02 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		//System.out.println("请输入要计算的n");
    		int tmp = in.nextInt();
    		long sum = 1;
    		for(int i = 2;i<=tmp;i++) {
    			if (i%2==0) {
    				sum += i;
    			}
    			else {
    				sum += -i;
    			}
    		}
    		System.out.println(sum);
    	}
    }
    

      

    [编程题03] 写一个简单的单例模式类
    package com.shundong.AlgorithmProblem;
    /**
     * java写一个简单的单例类
     * @author shundong
     *
     */
    
    class Singleton 
    {
    	//使用一个类变量来缓存曾经创建的实例
    	private static Singleton instance;
    	//对构造进行隐藏(private)
    	private Singleton(){}
    	/**
    	 * 提供一个静态方法 
    	 * 该方法加入了自定义控制 保证只产生一个Singleton对象
    	 * @return 返回Singleton 实例
    	 */
    	public static Singleton getInstance()
    	{
    		/**
    		 * 如果instance为null,表示还不曾创建Singleton对象 
    		 * 如果instance不为null,表示已经创建Singleton对象 
    		 */
    		if(instance==null) {
    			//创建Singleton对象 并将其缓存
    			instance = new Singleton();
    		}
    		return instance;
    	}
    }
    	//for test
    	public class SingletonTest
    	{
    		public static void main(String[] args) 
    		{
    			//创建实例不能通过构造!!!
    			//必须通过getInstance !!!单例 o了
    			Singleton aSingleton1 = Singleton.getInstance();
    			Singleton aSingleton2 = Singleton.getInstance();
    			System.out.println(aSingleton1==aSingleton2);
    		}
    	}
    

      [编程题04] 写一个二进制转十进制的转换器(切记注意越界以及非法符号问题)

    
    
    package com.shundong.stackAndQueue;
    
    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    /**
     * 二进制转换器(栈) 
     * @author shundong
     *
     */
    public class BinaryConversion {
    	private static String inConversion ;//输入的进制数
    	private static Deque<Integer> deque = new LinkedList<Integer>();
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("请输入你需要转换的数字:");
    		Scanner in = new Scanner(System.in);
    		inConversion = in.nextLine();//拿到键盘 要转换的
    		
    		if(isInteger(inConversion)) {
    			if(!isInt(inConversion)) {
    				System.out.println("输入的数字越界了!");
    			}else {
    				decimalToBinary(Integer.parseInt(inConversion));	
    			}
    		}else {
    			System.err.println("请输入一个数字");
    		}
    //		decimalToBinary(inConversion);
    	}
    	/**
    	 * 判断被转换的对象 是否为数字
    	 * @param str
    	 * @return
    	 */
    	public static boolean isInteger(String str) {    
    		Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");    
    		return pattern.matcher(str).matches();    
    	}  
    	/**
    	 * 越界判断
    	 */
    	public static boolean isInt(String val) {
    		try {
    		Integer.parseInt(val);
    		return true;
    		} catch (NumberFormatException e) {
    		return false;
    		}
     	}
    	/**
    	 * 十进制转二进制
    	 * @param val
    	 * @return
    	 */
    	public static void decimalToBinary(int val) {
    		do {
    			int mod = val % 2;
    			deque.push(mod);
    			val = val /2 ;
    		}while(val>0);
    		for (Integer integer : deque) {
    			System.out.print(integer);
    		}
    	}
    }
    
    
    

      

     

      
  • 相关阅读:
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Jekyll
    如何在CentOS 8 / RHEL 8服务器上安装qBittorrent
    如何在Kubernetes中向节点添加或删除标签
    java--io
    hdfs文件上传下载--client模式--Kerberos认证
    java--正则表达式使用
    Javaweb访问Hdfs--Kerberos认证
    Kerberos常用命令
    druid配置详解
    dubbo详细介绍
  • 原文地址:https://www.cnblogs.com/shundong106/p/9880321.html
Copyright © 2020-2023  润新知