8月23日腾讯后台笔试
第一题
输入n表示数组长度,输入k表示删除数组第k个元素,输入n个数表示数组,要求输出删后的数组。(原题是链表)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
if(i == k-1) {
int tem = scanner.nextInt();
continue;
}
sb.append(scanner.nextInt()).append(" ");
}
System.out.println(sb.toString().trim());
}
} 第二题
找字典序第k小的子串。因为k<=5,所以从头遍历即可。
import java.util.Scanner;
// 100%
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
int k = scanner.nextInt();
// 按字典序增加寻找
// 找到了就加a,找不到就重新开始加
String find = "a";
int got = 0 ;
while(true){
int index = s.indexOf(find);
while(index != -1){
got ++;
if(got == k)
break;
find += 'a';
index = s.indexOf(find);
}
if(got == k)
break;
find = lastAlphabetPlusOne(find);
}
System.out.println(find);
}
// 如果az都没有,那么就该b了吧
private static String lastAlphabetPlusOne(String s){
int length = s.length();
if(s.endsWith("z"))
return s.substring(0,length-2) + (
((char)(s.charAt(length-2)+1))
);
return s.substring(0, length -1) + ((char)(s.charAt(length -1)+1));
}
} 第三题
把n拆成俩数,使俩数的每一位和加起来最大。注意n会超过int。使用long
import java.util.Scanner;
// 100%
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int times = scanner.nextInt();
for (int i = 0; i < times; i++) {
long n = scanner.nextLong();
int nines = String.valueOf(n).length()-1;
long va1 = make9(nines);
long va2 = n - va1;
System.out.println(a(va1) + a(va2));
}
}
private static long make9(int nines) {
long res = 0;
while(nines-->0) {
res *=10;
res += 9;
}
return res;
}
private static int a (long n){
String s = Long.toString(n);
int sum =0;
for (char c: s.toCharArray()){
sum += (c-48);
}
return sum;
}
} 第四题
有n条板子长短不一,可以选择竖着一次刷一条板,也可以选择横着一次刷所有,但是如果中间断了就算刷两次。比如3 0 3横着刷,刷剩下2 0 2 这需要刷两次完成,因为中间断了。
给你板子长度,问最少多少次刷完。
没做出来
第五题
给你一个串,和n次测试,每次测试给两个数字a和b:
串从a到b的子串,最少可以分成多少个回文串。
比如 ababa,查1,4
得到abab,拆成aba和b两个回文,结果2。
暴力10%,没做出来。

