高途 2022.10.14 笔试 特别水~
忘了啥时候投高途了,然后给我发了一个笔试,前来试试水。
前面的选择基本什么都涉及,C,java的,爱考构造函数 显示什么的,给我的感觉像是本科java考试那种,竟纠结这种东西。
笔试题难度很水很水,水的有点像小米的笔试,真的就是 面试难度。
1、第一题是*,.的正则匹配,这个没啥难度,基本就是 考虑好 *, .就可以,太简单而且应该能找到原题,不细说思路了。
package gaotu.t01; import java.util.Scanner; /** * @author turbozhao * @date 2022/10/14 19:04 * @verison 1.0 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String a = in.nextLine(), b = in.nextLine(); System.out.println(process(a, b)); } public static boolean process(String a, String b){ int m = a.length(), n = b.length(); boolean[][] dp = new boolean[m+1][n+1]; //a[0...i-1] 和 b[0...j-1] 匹配上吗 dp[0][0] = true; for (int i = 0; i <= m; i++){ for(int j = 1; j <= n; j++){ if(j < n && b.charAt(j) == '*'){ continue; } if(i >= 1 && b.charAt(j-1) != '*'){ dp[i][j] = dp[i-1][j-1] && (b.charAt(j-1) == '.' || b.charAt(j-1) == a.charAt(i-1)); }else if(b.charAt(j-1) == '*'){ boolean p1 = (j - 2 >= 0 && dp[i][j-2]); boolean p2 = ( ( (i-1)>= 0) && dp[i-1][j] && ((j-2)>=0) && (a.charAt(i-1) == b.charAt(j-2) || b.charAt(j-2) == '.')); dp[i][j] = p1 || p2; } } } return dp[m][n]; } }
2、第二题是回文串判断,给一个正整数 判断是不是回文,真的水的不行,思路太直观了,也没有什么可以说的。
package gaotu.t02; import java.util.Scanner; /** * @author turbozhao * @date 2022/10/14 19:11 * @verison 1.0 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); int n = s.length(); for(int i = 0; i <= n/2+1 && i < n; i++){ if(s.charAt(i) != s.charAt(n-i-1)){ System.out.println("false"); return; } } System.out.println("true"); } }
3、第三题是括号判断是否合法,基本你学过数据结构这种应该都遇到过的课后题,知道用栈这个数据结构,解出来基本没啥难度。
package gaotu.t03; import java.util.Scanner; import java.util.Stack; /** * @author turbozhao * @date 2022/10/14 19:15 * @verison 1.0 */ public class Main { public static void main(String[] args) { Scanner in= new Scanner(System.in); String s = in.nextLine(); Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); if(c == '('){ stack.add(')'); }else if(c == '['){ stack.add(']'); }else if(c == '{'){ stack.add('}'); }else{ if(stack.isEmpty() || stack.pop() != c){ System.out.println("false"); return; } } } if(stack.isEmpty()){ System.out.println("true"); }else{ System.out.println("false"); } } }
这个笔试时间是 6.00-10.00,随便选择一个时间都可以,时长1个小时,所以我10.00后再去更代码吧。
#23届秋招笔面经##高途##高途笔试#