面试题编程题整理(更新中)
博主说两句,博主大三在校生,最近面试积累了很多的题目,于是准备整理一下 尽管可能不是最优解
注: 以下所有的代码均 通过了牛客网的测试
[编程题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);
}
}
}

浙公网安备 33010602011771号