京东2018校招研发笔试题记录
2017-09-09 18:46
357 查看
背景
这几天正好是各大互联网公司校招笔试的时间,于是陪着同学一起做了一下京东的笔试题。其中单选和不定项选择题涵盖的范围还是比较广的,包括子网掩码的计算、linux相关知识点、C++知识点、设计模式等。编程题有两道,其实难度不大,现在将第一题以及我的答案记录一下供大家参考。题目描述:
给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。注意两个s可能有重叠部分。例如,”ababa”含有两个aba。输入描述:
输入包括一个字符串s,字符串长度length(1<length1<50),s中每个字符都是小写字母。输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。输入:
abracadabra输出:
abracadabracadabra思路:
题目中说是包含两个s作为子串,而且可以有重叠部分。所以说,如果没有重叠的部分,最后输出的便是最长的字符串,即两个s拼接在一起。如果有重叠部分,也是仅限于s的前n位和s的后n位是一样的才可以。因此,我们可以用最简单的方式,把两个s当成s1和s2。从s1的第2(n)位往后开始和s2的第一位往后的每一个字符进行对比,如果直到s1的结尾都是一致的,则最后输出的字符便是s1的前1(n-1)个字符拼接s2。如果有不一致的,则从s1的第3(n+1)位开始重复比对,以此类推。代码实现:
public class JDTest { public static void main(String[] args) { Scanner ss = new Scanner(System.in); String s = ss.next(); System.out.println(getString(s)); } public static String getString(String s) { char[] charArray = s.toCharArray();//将字符串s转为char数组 for (int i = 1; i < charArray.length; i++) { //每次从s1的第i位与s2的第0位开始比较 int j = 0; int tempi = i; //如果相等则继续比较s1和s2的下一位字符 while (charArray[j] == charArray[tempi]) { //如果到了s1的最后一位都是相等的,则返回最短字符串 if (tempi == charArray.length - 1) { String result1 = s.substring(0, i); return result1 + s; } j++; tempi++; } } //如果没有重复,则返回两个s拼接的字符串 return s + s; } }
当然,如果有更好的解决方法,希望各位读者可以补充交流。
最后庆祝我的独立域名博客正式上线啦
本篇文章也会在我的独立域名博客异思园同步发布,当然,在那个博客上也会发布一些和技术无关的瞎扯胡扯的文章啦,毕竟在CSDN博客上,还是主要写一些技术性的文章嘛(严肃脸)相关文章推荐
- 京东2018秋招校招Java研发岗
- 京东2018校招 神奇数 (c/c++)
- 网易2018校招内推题目记录
- 京东2018校招Web前端工程师笔试有感
- 京东2018校招在线笔试编程题①
- 【2018校招笔试-京东=java开发】题目1括号匹配方案
- 2017年京东校招Java研发笔试编程第1题
- 【做题记录】[牛客网]网易2018校招内推编程题集合:第一题-彩色的砖块排列
- 2018京东校招Java笔试题
- 网易2018秋招校招Java研发岗
- 2016京东Android研发校招笔试题
- 【做题记录】[牛客网]网易2018校招内推编程题集合:第二题-等差数列
- 网易互娱2018校招游戏研发工程师在线笔试
- 【做题记录】[牛客网]网易2018校招内推编程题集合:第三题-交错01串
- 2018京东校招笔试题-数据分析岗
- 华为2018校招研发笔试编程题总结
- 阿里2015年校招研发笔试题
- 【2018校招笔试-京东=java开发】题目2 求幂
- 京东校招2017届应届生java研发岗,面试一,感想
- 阿里2018校招客户端研发笔试之编程题