1

输入:第一行为操作总数Q,之后有Q行。每行一个操作。
操作1,将字符串加在原字符串末尾。
操作2,给定长度,从字符串末尾删除。
操作3,查询现在字符串中第k个字符。
操作4,回滚一次操作(只回滚增删操作)。
难度:easy
耗时:10min

public class Main {static StringBuilder sb = new StringBuilder();static Stack<String> st = new Stack();private static void add(String s) {st.push(sb.toString());sb.append(s);}private static char search(int pos) {return sb.charAt(pos-1);}private static void delete(int len) {st.push(sb.toString());sb.setLength(sb.length() - len);}private static void rollback() {sb = new StringBuilder(st.pop());}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int Q = sc.nextInt();sc.nextLine();for (int j = 0; j < Q; j++) {String[] arr = sc.nextLine().split("\\s+");if (arr[0].equals("1"))add(arr[1]);else if (arr[0].equals("2"))delete(Integer.parseInt(arr[1]));else if (arr[0].equals("3")) {char c = search(Integer.parseInt(arr[1]));System.out.println(c);} elserollback();}}
}

2

输入:第一行为需要翻译的文本M。len(M) <= 50000.
第二行为字典中单词数n。2 <= n <= 50000.
每一个单词长度不超过20。
之后有n行,每一行代表一个单词。
返回总共有多少种翻译文本的方式。
返回的结果需要%835672545。
样例:

abcba
5
a
ab
ba
bc
cb

// 输出2
ab | cb | a
a | bc | ba

难度:medium
耗时:50min
一开始没有降维,MLE。

public class Main {static final int kMod = 835672545;private static int search(HashSet<String> dict, String s) {int n = s.length();int[][] dp = new int[n+1][n+1];for (int i = 1; i <= n; i++)for (int j = i; j <= n; j++) {String tmp = s.substring(i-1, j);if (dict.contains(tmp))dp[i][j] = 1;}for (int len = 1; len <= n; len++) {for (int i = 1; i+len-1 <= n; i++) {int j = i + len - 1;for (int k = i; k < j; k++) {String s2 = s.substring(k, j);if (dp[i][k] > 0 && dict.contains(s2)) {dp[i][j] = (dp[i][j] + dp[i][k]) % kMod; }}}}
//        System.out.println(dp[1][1]); //a
//        System.out.println(dp[1][2]); // ab
//        System.out.println(dp[1][3]); // a | bc
//        System.out.println(dp[1][4]); // ab | cbreturn dp[1][n];}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String target = sc.nextLine();int Q = sc.nextInt();sc.nextLine();HashSet<String> dict = new HashSet();for (int j = 0; j < Q; j++) {dict.add(sc.nextLine());}System.out.println(search(dict, target));}}

第二次,没有用Math.max优化长度,TLE。而且显示test case通过率为0,特别慌。
第三次终于AC。

public class Main {static final int kMod = 835672545;private static int search(HashSet<String> dict, String s) {int n = s.length();int[] dp = new int[n+1];dp[0] = 1;for (int r = 1; r <= n; r++) {for (int l = Math.max(1, r-20); l <= r; l++) {String tmp = s.substring(l-1, r);if (dp[l-1] > 0 && dict.contains(tmp))dp[r] = (dp[r] + dp[l-1]) % kMod; }}return dp[n];}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String target = sc.nextLine();int Q = sc.nextInt();sc.nextLine();HashSet<String> dict = new HashSet();for (int j = 0; j < Q; j++) {dict.add(sc.nextLine());}System.out.println(search(dict, target));}
}

3

输入:第一行两个整形,m表示天数,n表示袜子数量(只)。
第二行是每只袜子的颜色(用整形表示)。
之后有m行,每一天穿两只固定序号的袜子。但是必须保证两只袜子颜色一样。如果不一样,需要涂改袜子的颜色使这两只袜子的颜色能够匹配。代价为1。
返回最小代价。
难度:medium - hard
耗时:10min
应该是个dp问题。但是我连暴力解都没写出来。下面是个错误解法。

public class Main {static int[] color;static int[] color2;static int[][] comb;static int m;// number of daysstatic int n;// number of socksprivate static int paint() {// dp[i][j][k] := min number of painting// in day i, painting j-th sock to color k
//        int[][][] dp = new int[m+1][n][n];
//        dp[0] = color.clone();int cnt = 0;for (int i = 0; i < m; i++) {int sock1 = comb[i][0];int sock2 = comb[i][1];boolean same1 = true;boolean same2 = true;if (color[sock1] != color[sock2]) {color[sock1] = color[sock2];same1 = false;}if (color2[sock1] != color2[sock2]) {color2[sock2] = color2[sock1];same2 = false;}if (!same1 && !same2)cnt++;}return cnt;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();  m = sc.nextInt();  color = new int[n+1];comb = new int[m][2];for (int i = 1; i <= n; i++) {int c = sc.nextInt();color[i] = c;}color2 = color.clone();sc.nextLine();for (int j = 0; j < m; j++) {String[] arr = sc.nextLine().split("\\s");comb[j][0] = Integer.parseInt(arr[0]);comb[j][1] = Integer.parseInt(arr[1]);}System.out.println(paint());}
}

4

对给定字符串有两种操作。
操作1,修改第k个字符为新字符c。
操作2,查询给定范围内不同字符的个数。
难度:hard
耗时:10min
没写出来,只写了一个暴力解,60%测试用例超时。
我估计使用Trie。

public class Main {static StringBuilder sb = null;private static int query(int l, int r) {HashSet<Character> cnt = new HashSet();for (int i = l-1; i < r; i++) {cnt.add(sb.charAt(i));}return cnt.size();}private static void update(int pos, String s) {sb.setCharAt(pos-1, s.charAt(0));}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String target = sc.nextLine();sb = new StringBuilder(target);int Q = sc.nextInt();sc.nextLine();HashSet<String> dict = new HashSet();for (int j = 0; j < Q; j++) {String[] arr = sc.nextLine().split("\\s");if (arr[0].equals("2")) { // querySystem.out.println(query(Integer.parseInt(arr[1]), Integer.parseInt(arr[2])));} else {update(Integer.parseInt(arr[1]), arr[2]);}}}
}

做完心态是崩溃的。

2020暑期实习后台开发字节跳动笔试相关推荐

  1. 阿里巴巴2020暑期实习笔试题目及经验分享

    声明:如果侵权,请联系立即删除!! 声明:如果侵权,请联系立即删除!! 声明:如果侵权,请联系立即删除!! 阿里巴巴2020暑期实习笔试题 一.考试简介 二.题目详情 二.经验之谈 一.考试简介 考试 ...

  2. 使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5)

    使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5) 准备工作 微信支付配置 支付宝支付配置 字节跳动配置 1,微信支付配置: 开通微信支付的h5支付,关联APPID,保存k ...

  3. 后端开发面试自我介绍_字节跳动暑期实习后端开发面试经历

    字节跳动后端实习是什么,字节跳动后端实习面试流程是怎样? 今天小编就来帮助大家了解一下字节跳动后端实习面试到底有什么内容. (好了不皮了,开始正文) 字节的面试流程总的来说还是挺享受的,和面试官两人的 ...

  4. 2020腾讯后台开发暑期实习生面试一面分享(天美工作室群)

    写在前面 写下这篇博客的时间是2020年3月12日22:00. 在今天上午10:30-11:30,我经历了人生中第一次求职面试. 目前大三,想在春招找大厂的暑期实习,原计划拿到转正Offer后,大四能 ...

  5. 大厂Java开发字节跳动2022年实习招聘要求总结

    目录 实习招聘 字节跳动Java实习生 字节跳动抖音服务端实习生 字节跳动抖音直播后端实习生 字节跳动飞书实习生 校招招聘 阿里巴巴Java 腾讯Java 字节跳动电商后端 细节 字节跳动Java实习 ...

  6. 字节四面-暑期实习后端开发

    文章目录 字节一面 字节二面 字节三面 字节四面 流程: 3.2内推,3.3收到一面通知,无笔试 3.8号一面,次日hr发邮件通过 3.17二面,次日hr发邮件通过 3.23三面,3.25hr通知三面 ...

  7. 算法岗实习面经-字节跳动 PayPal 寒武纪 OPPO 平安科技等

    本文记录2020年春季找算法实习的经历,主要是面试内容,文末有惊喜~ 文章目录 PayPal Data Scientist OPPO研究院 计算机视觉算法 字节跳动 推荐算法 寒武纪科技 媒体算法 平 ...

  8. 2020三月实习后台春招经历

    1.美团点评(二面凉经) 3.12笔试(一道ac,一道86%),3.18收到一面电话面通知,重置3.23一面视频面. 一面,1h20min 1.自我介绍,然后手撕算法. 2.深挖项目,负责哪些内容,收 ...

  9. 美团2020暑期实习——前端电话面试回顾

    一.投递信息 投递时间:2020年2月24日 岗位:Web前端开发工程师 工作地点:北京 信息来源:师兄发的内推邀请函 笔试时间:2020年3月12日 面试时间:2020年3月18日 面试方式:微信语 ...

最新文章

  1. 程序员笔试面试后上机_2021年国考笔试成绩查询后,面试准备阶段需要做好四方面...
  2. 极客新闻——09、如何打造核心骨干团队
  3. IDEA(IntelliJ IDEA)+常用快捷键(short cuts)
  4. pythopn 函数(内置函数)
  5. doctor mysql数据导入_线上环境mysql主从同步的搭建过程
  6. 用Asp.Net c#写的采集小例子
  7. 【渝粤教育】国家开放大学2018年秋季 0221-22T数字电子电路 参考试题
  8. C++ boost::upgrade_lock upgrade_to_unique_lock 升级锁 是什么 怎么用
  9. Lucas(卢卡斯)定理---组合数取模问题
  10. Shiro设定密码匹配规则(自定义密码验证匹配器)
  11. 毕向东java基础,B站直达,目录,b站浏览目录太难受,在这做一个
  12. 工作三年,回顾一下工作历程
  13. Image Processing in the Spatial Domain 空间域图像处理
  14. centos搭建proxypool
  15. 针对电动车组线路布置与检测的线缆测试仪方案
  16. 【算法题解】Codeforces Round #817 (Div. 4)题解
  17. psid mysql_浅识MySQL
  18. MATLAB生成彩色图像,显示原始灰度与负片
  19. 标准光源与色温对应关系
  20. MS VS+HIK海康机器人工业相机环境配置

热门文章

  1. IBM Java多线程 - 6.其它线程 API 详细信息
  2. 安装软件包的三种方法
  3. MyEclipse-Web开发时何时重启tomcat、重新部署
  4. 更改ORACLE归档路径及归档模式
  5. 是‘登陆’还是‘登录’
  6. java泛型 简书_一文带你认识Java泛型基础
  7. Vivado中单端口和双端口RAM的区别
  8. FPGA在电平接口领域的应用
  9. oracle java api_oracle java api
  10. 难道这是残差结构的本质(addnorm)