第一题
十进制转三进制
public String getNumber(int num) {
StringBuilder str = new StringBuilder();
while (num != 0) {
str.append(num % 3);
num /= 3;
}
str.reverse();
StringBuilder sb = new StringBuilder();
for (char c : str.toString().toCharArray()) {
if (c == '0') {
sb.append("%");
} else if (c == '1') {
sb.append("$");
}else {
sb.append("#");
}
}
return sb.toString();
}
第二题
到质心距离最近的点
public int getIndex(String[] points) {
int index = 0;//最终结果
double dis = Integer.MAX_VALUE;// 距离
double avgX = 0;
double avgY = 0;
int k = points.length;
int[] x = new int[k];
int[] y = new int[k];
int i = 0;
for (String point : points) {
String[] split = point.split(",");
x[i] = Integer.parseInt(split[0]);
avgX += x[i];
y[i] = Integer.parseInt(split[1]);
avgY += y[i];
i++;
}
avgX /= k;
avgY /= k;
for (int j = 0; j < k; j++) {
int x1 = x[j];
int y1 = y[j];
double tempDis = Math.sqrt((x1 - avgX) * (x1 - avgX) + (y1 - avgY) * (y1 - avgY));
if (tempDis < dis) {
dis = tempDis;
index = j;
}
}
return index;
}
第三题
扑克牌排序
public String[] getPoker(String[] cards) {
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
ArrayList<String> list3 = new ArrayList<>();
ArrayList<String> list4 = new ArrayList<>();
ArrayList<String> list5 = new ArrayList<>();
for (String card : cards) {
if (card.charAt(0) == 'k')
list1.add(card);
else if (card.charAt(0) == 's')
list2.add(card);
else if (card.charAt(0) == 'h')
list3.add(card);
else if (card.charAt(0) == 'p')
list4.add(card);
else
list5.add(card);
}
Collections.sort(list1);
Collections.sort(list2);
Collections.sort(list3);
Collections.sort(list4);
Collections.sort(list5);
int i = 0;
for (String str : list1) cards[i++] = str;
for (String str : list2) cards[i++] = str;
for (String str : list3) cards[i++] = str;
for (String str : list4) cards[i++] = str;
for (String str : list5) cards[i++] = str;
return cards;
}