BASIC-12
经过一天的思考(不是,我晚上才开始敲代码)
为了解决运行超时,做了以下改动
- 改进一:
二进制转八进制改为计算方式,而不是switch-case
- 改进二:
把原来的转换为八进制之后再删除开头的‘0’改为转化为八进制时共同进行
还是不行,我生气了,决定参考一下大佬的代码
最后
把转换过程中的所有String类转化为StringBuffer类
为什么是所有呢?因为我只改了十六转二部分的之后发现还是超时
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
for (i = 0; i < n; i++) {
String str = scanner.next();
StringBuffer buffer = new StringBuffer();
int j, k;
for (j = 0; j < str.length(); j++) {
switch (str.charAt(j)) {
case '0': {
buffer.append("0000");
break;
}
case '1': {
buffer.append("0001");
break;
}
case '2': {
buffer.append("0010");
break;
}
case '3': {
buffer.append("0011");
break;
}
case '4': {
buffer.append("0100");
break;
}
case '5': {
buffer.append("0101");
break;
}
case '6': {
buffer.append("0110");
break;
}
case '7': {
buffer.append("0111");
break;
}
case '8': {
buffer.append("1000");
break;
}
case '9': {
buffer.append("1001");
break;
}
case 'A': {
buffer.append("1010");
break;
}
case 'B': {
buffer.append("1011");
break;
}
case 'C': {
buffer.append("1100");
break;
}
case 'D': {
buffer.append("1101");
break;
}
case 'E': {
buffer.append("1110");
break;
}
case 'F': {
buffer.append("1111");
break;
}
default:
break;
}
}
if (buffer.length() % 3 == 1) {
char c = '0';
buffer.insert(0, c);
buffer.insert(0, c);
} else if (buffer.length() % 3 == 2) {
char c = '0';
buffer.insert(0, c);
}
// System.out.println(s);
StringBuffer ans = new StringBuffer();
for (k = 0; k < buffer.length() - 2; k += 3) {
int num = '0' + 4 * (buffer.charAt(k) - '0') + 2 * (buffer.charAt(k + 1) - '0') + buffer.charAt(k + 2)
- '0';
char c = (char) num;
if (k == 0 && c == '0') {
} else {
ans.append(c);
}
}
System.out.println(ans);
}
}
}
花了很长时间,但是如果真的考的话估计很快就做完了因为我想不到会有多长的数据,也不会一遍遍的改
是时候去深入了解一下这两个类了
淦,很生气啊,后悔为什么报JAVA组
BASIC-13
很简单的一道数组排序问题,直接使用Arrays里的sort函数
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
int arr[] = new int[n];
for (i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
for (i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}