其他分享
首页 > 其他分享> > 面试提前批

面试提前批

作者:互联网

截至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语句中对应路径的属性,如果没有返回空。比如shopee,如果路径people.name,结果shopee,如果路径是 people.age,结果是""

    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