JAVA面试题
JAVA面试题1 有一组N个数,想将数进行从小至大排好序,但是只能通过下面的操作进行排序:
任取数组中的一个数然后将他防止在数组的最后一个位置。
问最少操作多少次可以使得数组从小到大进行有序?
样例输入:19 2 4 16 10
样例输出:2
import java.util.Arrays; import java.util.Scanner; public class Test{ public static void main(String[]args){ Scanner sc = new Scanner(System.in); int []arr = new int[6]; int count = 0; for(int i=1;i<=5;i++){ arr[i] = sc.nextInt(); } for(int i=0;i<5;i++){ for(int j=arr.length-1-i;j-1>=1;j--){ if(arr[j-1] > arr[j]){ int temp = j-1; arr[0] = arr[j-1]; while(temp+1 < arr.length){ arr[temp] = arr[temp+1]; temp++; } arr[5] = arr[0]; count++; } } } System.out.println(count); } }
JAVA面试题2 定义一个类,编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符
串。但是要保证汉字不被截半个,如:张ABC 4,应该截为张AB,输入:张ABC王DEF 6,应该输出
为:张ABC,而不是张ABC+王的半个。
样例输入:张ABC 4
样例输出:张AB
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(true) { String str=scan.next(); int num=scan.nextInt(); byte[] buf=str.getBytes(); if(num<=buf.length) { int times=0; for(int i=0;i<num;i++) { if(buf[i]<0) { times++; } } if(times%2==1) { num--; } String out=new String(buf,0,num); System.out.println(out); System.out.println(); }else { try { throw new MyException("截取字节数超出字符串长度..."); } catch (MyException e) { e.printStackTrace(); } } } } } class MyException extends Exception{ public MyException(String msg) { super(msg); } }