创新工厂的笔试题目

 

创新工厂的笔试题目,大家一起来讨论一下。 
1、把输入的字符串转置。比如输入“I love YOU too ”,则输出“too YOU love I”。 
2,输入一个整数,计算出比该整数大的最小的质数。 
3,输入一个数组,生成一个二叉排序树。

 

 

题目本身不是很难。李开复说创新工厂对算法的要求不是很高。都是比较基础的题目。

 

下面是我的解答。

最小质数我用了改良的打表,不知道有没有别的比较好的方法。

 

package com.easyProblem; /* * 创新工厂的笔试题目,大家一起来讨论一下。 1、把输入的字符串转置。比如输入“I love YOU too ”,则输出“too YOU love I”。 2,输入一个整数,计算出比该整数大的最小的质数。 3,输入一个数组,生成一个二叉排序树。 * */ public class NewFactoryProblem { public static void main(String[] args){ System.out.println("<--------------第一题----------------->"); System.out.println(reverseString("I love too you you love me me love you")); System.out.println("<--------------第二题----------------->"); System.out.println("The result is: " + biggerPrime(1542348)); System.out.println("<--------------第三题----------------->"); MySTree tree = new MySTree(new int[]{5,3,4,6,8,0,1,2}); tree.print(tree.root); } private static String reverseString(String str){ String[] s = str.split(" "); String tmp = s[s.length-1]; for(int i=s.length-2; i>=0; i--) tmp += " " + s[i]; return tmp; } private static int biggerPrime(int num){ int count = 0; int[] tag = new int[2*num]; int[] p = new int[num]; for(int i=0; i num) return i; p[count++] = i; } for(int j=0; (j < count && i*p[j] < 2*num && (p[j] <= tag[i] || tag[i] == 0)); j++) tag[i*p[j]]=p[j]; } return -1; } } class MySTree{ public TreeNode root; public MySTree(int[] num){ if(num.length == 0) return; root = new TreeNode(num[0], null, null); for(int i=1; i

你可能感兴趣的:(Java,算法和面试题)