JAVA面试题

2019-08-08 00:00:00 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);
}
}

 

相关文章