2017阿里巴巴实习生招聘编程题
来源:互联网 发布:供销大数据 陈静红 编辑:程序博客网 时间:2024/05/22 06:28
解答:
此题是动态规划类问题,假设dp[i][j]表示为为 s[0..i]与p[0...j]是否匹配,则代码如下:
import java.util.Scanner;/** * 字符串匹配 * @author Dell * */public class Test4 { public static boolean isMatch(String s, String p){if(p.length()==0){if(s.length()==0) return true;elsereturn false;}boolean[][] dp=new boolean[s.length()+1][p.length()+1];dp[0][0]=true;for(int i=1;i<=p.length();i++){if(p.charAt(i-1)=='*') dp[0][i]=dp[0][i-1];}for(int i=1;i<=s.length();i++){for(int j=1;j<=p.length();j++){if(s.charAt(i-1)==p.charAt(j-1)||p.charAt(j-1)=='?')dp[i][j]=dp[i-1][j-1];if(p.charAt(j-1)=='*')dp[i][j]=dp[i-1][j]||dp[i][j-1]; //比较难想}}return dp[s.length()][p.length()];}public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){String s=sc.nextLine();String p=sc.nextLine();System.out.println(isMatch(s,p));}}}
2:类似于逆波兰表达式的题,只是附加了一些条件,比如栈的空间最大为16,当压栈的整数超过16,则返回-2;当栈为空时再从栈中弹出数据要返回-1;此外,逆波兰表达式中的空格表示分隔符,可以有多个空格。
解答:
import java.util.ArrayList;import java.util.Scanner;import java.util.Stack;public class Test2 { public static int resolve(String expr){Stack<Integer> s=new Stack<>();String[] s1=expr.split(" "); ArrayList<String> list=new ArrayList<>();for(int i=0;i<s1.length;i++){if(s1[i]!=" "){list.add(s1[i]);}}for(int i=0;i<list.size();i++){ String t=list.get(i); try {int temp=Integer.parseInt(t);if(s.size()<16){s.push(temp);}else{return -2;} } catch (NumberFormatException e) { if(t.equals("^")){if(s.size()>=1){int a=s.pop();a++;s.push(a);}elsereturn -1;}else if(t.equals("+")){if(s.size()>=2){int a=s.pop();int b=s.pop();int c=a+b;s.push(c);}else{return -1;}}else{if(s.size()>=2){int a=s.pop();int b=s.pop();int c=a*b;s.push(c);}else{return -1;}}}}return s.pop();}public static void main(String[] args) { ArrayList<Integer> inputs=new ArrayList<Integer>(); Scanner in=new Scanner(System.in); String line=in.nextLine(); if(line!=null&&!line.isEmpty()) { int res=resolve(line.trim()); System.out.println(String.valueOf(res)); }}}
2 0
- 2017阿里巴巴实习生招聘编程题
- 阿里巴巴2016实习生招聘编程题
- 阿里巴巴2017实习生招聘笔试题
- 阿里巴巴2017实习生招聘数据研发工程师编程题2(字符串处理)
- 阿里巴巴2017实习生招聘笔试题(算法工程师)
- 阿里巴巴2017暑期实习生招聘面经
- 2017年阿里巴巴实习生招聘笔试
- 2013年阿里巴巴实习生招聘笔试题
- 阿里巴巴2013实习生招聘笔试题
- 阿里巴巴集团2014实习生招聘笔试题
- 阿里巴巴2014实习生招聘笔试题
- 2017百度实习生招聘编程题
- 2017腾讯实习生招聘笔试编程题
- 2017阿里实习生招聘考试编程题
- 2017百度实习生招聘编程题
- 阿里巴巴2017实习生招聘在线编程测验(算法工程师-机器学习)
- 阿里巴巴2017实习生招聘在线编程测验(算法工程师-机器学习)
- 2014阿里巴巴实习生招聘-研发工程师笔试题/网络编程小结
- Linux时间函数札记
- 常用的JSTL函数整理。
- ns-3关键概念(节点、应用、信道、网络设备、拓扑帮助)
- C/C++ 类库开发库参考【资料整理】
- Tomcat热部署的方法
- 2017阿里巴巴实习生招聘编程题
- JS代码压缩混淆工具使用说明
- ThinkPHP 中M方法和D方法的具体区别及其他方法介绍
- 齐博门户网站:解决百度ueditor支持iframe框架页面的视频播放问题
- context:component-scan标签的use-default-
- 折半枚举
- 06_数据表单
- Phpstorm的安装和破解
- linux驱动开发流程