面试提前批
作者:互联网
截至2021/8/2
爱奇艺笔试 —— 2021/8/1 下午三点
记录:基础不好
虾皮笔试
算法题
第一道
给一个数组,找到最小下标,使得该下标左边数的和等于右边数的和(不包括下标),题目保证有答案
很简单,暴力过
第二道
数的划分
将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。
求整数n分为k份,共有多少种不同的分法。
输入两个整数n,k(6<n<=200,2<=k<=6)。
输出一个整数,即有几种不同的分法。
给一个数n,分成k份,且不重复,有多少结果,比如7,3
结果是4
public int divide(int n, int k ){
int dp[][] = new int[200][7];
dp[0][0] = 1;
for(i=1;i<=n;i++){
for(j=1;j<=k;j++){
if(i>=j){ //划分的分数要小于等于该数本身
dp[i][j] = dp[i-j][j] + dp[i-1][j-1];
}
}
}
return dp[n][k];
}
第三道
给一个合法的xml语句,和一个路径,找到xml语句中对应路径的属性,如果没有返回空。比如,如果路径people.name,结果shopee,如果路径是 people.age,结果是"" shopee
public String getXMLValue(String inxml,String path){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < inxml.length(); i++) {
char c = inxml.charAt(i);
if(c!='/')
sb.append(c);
}
inxml = sb.toString();
String[] words = path.split("\\.");
boolean flag = false;
for (int i = 0; i < words.length; i++) {
words[i] = "<" + words[i] +">";
int len = words[i].length();
if(inxml.startsWith(words[i])&&inxml.endsWith(words[i]))
inxml = inxml.substring(len,inxml.length()-len);
else{
flag = true;
break;
}
}
if(flag)
return "";
for (int i = 0; i < inxml.length(); i++) {
char c = inxml.charAt(i);
if(c=='<'||c=='>')
return "";
}
return inxml;
}
标签:inxml,return,int,面试,length,words,dp,提前 来源: https://www.cnblogs.com/BigMonster-S/p/15091934.html