博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法编程题
阅读量:3732 次
发布时间:2019-05-22

本文共 1650 字,大约阅读时间需要 5 分钟。

2019京东春季校招笔试测试题二

/*题目:

 * 根据输入的要求输出值:

 * 第一行输入一个整数:m

 * 接下来m行输入m个字符串

 *  最后一行输入一个较长的字符串(长度小于10000),

 * 要求:

 *      求出最后一个长串的子串,且它的子串是m个字符串中某个或者全部字符串的子串的个数

 *    《子串不能有交叉;(如: aabbc 的字串: a b c )因为.aa:与a有交叉,bbc与b有交叉》

 * 结果:输出满足条件的字串的个数。

如输入:

3

aa

b

ac

bbaac

输入结果:3

 */

我的代码是这样的:

public class Main {

 

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

while(sc.hasNext()) {

int m=sc.nextInt();

List<String> li=new ArrayList<String>();

for(int i=0;i<m+1;i++) {

li.add(sc.next());

}

//找出前n个串中的最大长度即为字串的最大长度

int count=0;

for(String str:li) {

if(str.length()>count) {

count=str.length();

}

}

//去找最后一个串的子串, 子串最大长度为count

List<String> lis=new ArrayList<String>();//存它所以的子串,满足没有交叉

//从字串长度为1开始取

String lastStr=li.get(li.size()-1);

char[] la=lastStr.toCharArray();

for(int i=1;i<=count;i++) {

//取串

for(int j=0;j<lastStr.length()-i+1;j++) {

StringBuilder strB=new StringBuilder();

//子串长度

for(int n=0;n<i;n++) {

strB.append(la[j+n]);

}

j=j+i-1;

lis.add(strB.toString());

}

}

int total=0;

List<String> newLis=new ArrayList<String>();//存子串,二次筛选没有交叉的找到满足没有交叉的子串(所以感觉第一次筛选一次的目的,就是为了减少点运行时间,这儿也可以一并筛选的)

newLis.add(lis.get(0));

s:for(int j=1;j<lis.size();j++) {

for(int i=0;i<newLis.size();i++) {

if(lis.get(j).toCharArray()[0]==newLis.get(i).toCharArray()[newLis.get(i).toCharArray().length-1]) {

continue s;

}

}

newLis.add(lis.get(j));

}

//去遍历,看看满足是前m个串的子串这个条件不

s:for(String s:newLis) {

for(int i=0;i<li.size()-1;i++) {

if(li.get(i).contains(s) && li.get(i).length()>=s.length()) {

total++;

continue s;

}

}

}

System.out.println(total);

}

    }

}

 

------

在本地IDE上写完后自己感觉应该没问题,提交代码的时候,老是不对。最后检查出来, 

 我代码体中当时为了查看数据,中间写了一个测试打印,结果调试编译不对。   发现的时候,时间到了,已经没时间改了。

 

惨痛的教训,望以后面试的一定要注意呀。

 

转载地址:http://zkkin.baihongyu.com/

你可能感兴趣的文章
Cadence PCB敷铜注意事项
查看>>
Allegro丝印修改
查看>>
Allegro PCB输出光绘文件
查看>>
leetcode(一)--- 树
查看>>
MyBatis的多表操作
查看>>
MyBatis注解开发
查看>>
点击复制内容到手机粘贴板(简洁易懂-只需五步)
查看>>
在vue项目中使用字体图标(精简易懂)(配图)
查看>>
flex布局详解(配图-简洁易懂)
查看>>
生成随机密码(长度自定义)
查看>>
前端生成并导出表格+样式修改(只需一个插件,无需修改源码)
查看>>
rem项目踩到的坑
查看>>
前端解析zip压缩包 --- vue、react等等通用
查看>>
大文件断点续传/切片上传(react、vue通用)
查看>>
打包&配置&优化--备忘录
查看>>
vue项目CDN引入
查看>>
Nonde+MongoDB基础创建及增删改查
查看>>
前端模块化详解(包含各种导入导出及输出结果)
查看>>
JAVA面向对象基础作业题目
查看>>
ONENET平台--TCP透传
查看>>