美团 3.19笔试
美团笔试 3.19
1.加密解密
题目描述: 小团在网上冲浪时,发现了一些神秘代码,经过一段时间研究,小团发现了这些代码的加密规则。 对于一个长度为n的字符串s,其对应的加密字符串t的第一个字符是s中的第n/2个字符(向上取整),而t中的第二个到第n个字符则刚好对应s删去第n/2个字符(向上取整)后所得字符串的加密字符串。这个规则也可以用如下流程描述:将t初始化为一个空串,不断从s中取出第n / 2个字符(向上取整),并将其拼到t的后面,当s为空时,t即是所求的加密字符串。设计命令行工具帮他加密解密。
class Solution { public String encrypt(String s){//加密 LinkedList<Character> words = new LinkedList<>(); StringBuilder res = new StringBuilder(); for (int i = 0; i < s.length(); i++) { words.add(s.charAt(i)); } while (!words.isEmpty()){ int index = (int)Math.ceil(words.size() / 2.0) - 1; res.append(words.get(index)); words.remove(index); } return res.toString(); } public String decrypt(String s){//解密 LinkedList<Character> res = new LinkedList<>(); for (int i = s.length() - 1; i >= 0; i--) { char d = s.charAt(i); int index = (int)Math.ceil((res.size() + 1) / 2.0) - 1; res.add(index,d); } StringBuilder ans = new StringBuilder(); for (Character re : res) { ans.append(re); } return ans.toString(); } }
2.Git 版本控制
设计一个版本控制软件,该软件会比较文件之间的差别并汇报冲突。比如上一次同步之后,小团将A机器上的文件f修改成了版本f1,并在f1没有同步到B机器上时,将B机器上的文件f修改成了版本f2,则版本控制工具会检测这一冲突。
输入
10 2 3 //文件总数,A修改的次数,B修改的次数 3 5 4 8 //A修改的文件范围[3,4] 和[5,6,7,8] 1 5 7 3 5 9 //B修改的文件范围[1,2,3],[5],[7,8,9]
输出
4 //有四个冲突