字节跳动字节跳动5.11 开发笔试题开发笔试题
时间:2020-05-11 岗位:开发(2020字节跳动校园招聘后端和客户端方向第三场考试)
文章目录文章目录T1、操作字符串思路:栈记录之前状态T2、计算字符串解释方法数思路一:回溯思路二:动态规划T3、最小染袜子
个数?思路:并查集T4、区间内的不同字符个数思路:暴力模拟(超时)
T1、操作字符串、操作字符串
4种操作:(1)增加;(2)删除;(3)输出;(4)回退;
(4)回退操作只对(1)(2)起作用;
思路:栈记录之前状态思路:栈记录之前状态
StringBuilder 记录字符串,然后每次进行(1)/(2)操作就放入栈中;在(4)操作的时候将字符串更新为栈顶字符串;
package compitition.zijie;
import java.util.Scanner;
import java.util.Stack;
public class Main1{
public static void main(String[] args){
Scanner c = new Scanner(System.in);
int n = c.nextInt();
StringBuilder sb = new StringBuilder();
Stack stack = new Stack();
while (n-- > 0) {
switch (c.nextInt()){
case 1 :
stack.push(sb.toString());
String s = c.next();
sb.append(s);
break;
case 2 :
stack.push(sb.toString());
int del = c.nextInt();
if(sb.length() < del){
sb = new StringBuilder();
}else{
sb.delete(sb.length()-del,sb.length());
}
break;
case 3 :
int print = c.nextInt();
System.out.println(sb.charAt(print-1));
break;
case 4 :
sb = new StringBuilder(stack.pop());
break;
}
}
c.close();
}
}
T2、计算字符串解释方法数、计算字符串解释方法数
给定字符串s和字典;问字符串有几种解释方式;
字典中至少存在两个单词,且每个单词长度<20;
思路一:回溯思路一:回溯
用Set装入字典,maxLen记录单词最大长度;
递归寻找从索引begin开始往后的maxLen长度的字符串是否在字典中,是则继续递归;
【数组越界错误!!!】【数组越界错误!!!】(不知道为什么)
思路二:动态规划思路二:动态规划