2017阿里巴巴实习生招聘编程题
2017-04-27 11:11
309 查看
解答:
此题是动态规划类问题,假设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;
else
return 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);
}
else
return -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));
}
}
}
相关文章推荐
- 阿里巴巴2017实习生招聘在线编程测验(算法工程师-机器学习)
- 网易2017暑期实习生招聘笔试编程题之小易背单词
- 2017腾讯实习生招聘笔试编程题
- 京东2017实习生招聘在线笔试编程题
- 网易2017实习生招聘笔试题编程题(双核处理)
- 京东2017实习生招聘编程题——终结者 python
- 2017阿里实习生招聘考试编程题
- 2017阿里实习生招聘编程题之相亲约会
- 2017网易实习生招聘编程题之魔力手环(矩阵幂)
- 阿里巴巴2017暑期实习生招聘面经
- 奇虎360 2017暑期实习生招聘笔试编程题之跑步和剪气球
- 2017京东实习生招聘编程题——买糖果(python)
- 2017京东实习生招聘编程题——站队抓小偷(python)
- 2017网易雷火盘古实习生招聘编程题之字符串编码——LZ压缩
- 2017百度实习生招聘编程题
- 阿里巴巴2017实习生招聘笔试题(算法工程师)
- 2017百度实习生招聘编程题
- 2017网易雷火实习生招聘编程题
- 腾讯2017暑假实习生招聘笔试编程题
- 2017百度实习生招聘笔试真题编程题集合