前些天参加了PTC的笔试,40分钟两道编程题。现把两道题整理出来分享给大家。
1. Input: 一个String数组,例如:
String[] list = { "aabb", "bbaa", "ccbb", "bbcc", "ccdd", "baab" };
Notes: 假设上面数组中的 “aabb”, "bbaa" 以及 “baab”为相同的元素。所以输入上面的数组则返回3
代码如下:
import java.util.Arrays; import java.util.HashSet; public class helloWorld { public static void main(String[] args) { String[] list = { "aabb", "bbaa", "ccbb", "bbcc", "ccdd", "baab" }; System.out.println(Count(list)); } private static int Count(String[] list) { HashSet<String> tmpset = new HashSet<String>(); for (int i = 0; i < list.length; i++) { char[] chr = list[i].toCharArray(); Arrays.sort(chr); tmpset.add(String.valueOf(chr)); } return tmpset.size(); } }
int[] list = {1, 5, 7 };Notes: 上面的数组由三部分组成x+y, x-y 和混淆视听的值
Output: 返回x*y的最大值
代码如下:
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; public class getMaxnum { /** * @param args */ public static void main(String[] args) { int[] list = { 5, 7 }; System.out.println(Count(list)); } private static int Count(int[] list) { ArrayList<Integer> arrlist = new ArrayList<Integer>(); Arrays.sort(list); for (int i = (list.length - 1); i >= 0; i--) { for (int j = i - 1; j >= 0; j--) { if ((list[i] * list[i] - list[j] * list[j]) % 4 == 0) { arrlist.add((list[i] * list[i] - list[j] * list[j]) / 4); } } } Collections.sort(arrlist); return arrlist.get(arrlist.size() - 1); } }
代码有不足之处,欢迎大虾们拍砖。