美团 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 //有四个冲突 
