两个简单的面试题
分享两个简单的面试题,好吧,求质数的那个面试题居然没做出来。。。。要好好打基础
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()); } }
--------------以上皆原创,给未来的自己留下一点学习的痕迹!--------