分享兩個簡單的面試題,好吧,求質數的那個面試題居然沒做出來,,,,要好好打基礎
public class Study0812 { //獲取一個字串中的重復次數最多的字符 public static char printMore(String str) { //小寫字母最多也就是26個 int[] arr = new int[26]; char[] chars = str.toCharArray(); //既然小寫字母最多就是26個,那我獲取到該字符的ascii碼減去97可以直接當作陣列的索引,這個索引肯定不會超過26 for (int i = 0; i < chars.length; i++) { arr[chars[i] - 97]++; } //獲取arr陣列中最大的數的索引,該索引加97就是字符中重復最多的字符 int maxIndex = 0; for (int i = 0; i < arr.length - 1; i++) { if (arr[maxIndex] < arr[i + 1]) { maxIndex = i + 1; } } return (char) (maxIndex + 97); } //輸入一個數,獲取該數以下的所有質數,例如輸入10,輸出2,3,5,7 //什么叫做質數呢,其實就是一個數只能被1和本身整除; // 在代碼中,假設有一個數是n,我們只需要判斷n是否可以整除 2到根號n 之間的所有數,如果都不能整除,該數就是質數 //這里假設n>3 public static List<Integer> printPrime(int num){ List<Integer> result = new ArrayList<>(); //由于num>3,則肯定有質數2,3,先放進去 result.add(2); result.add(3); //找到num以下的所有數,每一個數都去判斷是不是質數 for (int i = 2; i < num; i++) { boolean flag = false; //判斷n是否可以整除 2到根號n 之間的所有數 //每一整數i只要有一次被其他數整除了,那么就可以斷定該數不是質數,直接跳出回圈,找下一個i for (int j = 2; j <= Math.sqrt(i); j++) { if (i%j == 0){ flag = false; break; } flag = true; } //如果是質數就放到集合中 if (flag){ result.add(i); } } return result; } public static void main(String[] args) { //獲取重復最多的那個字符 char ch = printMore("aaabcdexxxxxxfg"); System.out.println("重復最多的字符是:" + ch); //找到一個數以下的所有質數,例如輸入10,輸出2,3,5,7 //假設輸入的數大于3 List<Integer> primeList = printPrime(20); System.out.println(primeList.toString()); } }

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80772.html
標籤:Java
上一篇:微信小程式對接通聯支付
