灵犀互娱前端、java、终端笔试。算法只能用java吗
我投的前端,写算法的时候只有Java。虽然不太熟,毕竟科班学过,用java写过游戏,勉强A了1和3题,100%。第二题其实也简单,但是对java字符串函数不太熟。
第一题,括号匹配,经典数据结构栈的题,闭眼写。
import java.util.Stack;
public class Main {
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' && top != '[')) {
return false;
}
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
Scanner sn=new Scanner(System.in);
while(sn.hasNextLine()){
String aa=sn.nextLine();
System.out.ln(!isValid(aa));
}
}
第二题,一个长串 test="asdapplebananaegg" match=['apple','egg'],大概是这样吧。输入输出比较麻烦,就一行,还要分割test和match。然后根据match数组中的向,找到长串test中的位置,然后以数组[i,j]的形式输出。最终输出二维数组。A:0%。一个测试用例都没骗到。
第三题,找最小因数组成的整数。比如,输入48,输出68.输入192,输出388.因为3*8*8=192
public static int findNum(int a) {
if (a == 0) {
return 0;
}
int result = 0;
int count = 0;
for (int i = 9; i >= 2; i--) {
while (a % i == 0) {
result += i * Math.pow(10, count);
count++;
a /= i;
}
}
if (a != 1) {
return 0;
}
return result;
}
有人问前端还用java?主要是系统有问题,只能选Java。无所谓,反正真正的全栈是多数语言都会
查看15道真题和解析