携程Java后端开发4月15日笔试参考

忘记题目了,只有代码,写得也比较烂,各位将就着看吧,没优化过的
第一题    盖房子
static String buildingHouse(String n) {
    if(n.charAt(0)=='-'){
        for(int i=0;i<n.length();i++){
            if(n.charAt(i)>'9' || n.charAt(i)<'0') return "N";
        }
        return "O";
    }
    for(int i=0;i<n.length();i++){
        if(n.charAt(i)>'9' || n.charAt(i)<'0') return "N";
    }
    int num = Integer.valueOf(n);
    if(num<1 || num>12) return "O";
    ArrayList<String> str = new ArrayList<>();
    str.add("R");
    for(int i=1;i<num;i++){
        ArrayList<String> tmp = new ArrayList<>();
        for(int j=0;j<str.size();j++){
            if(j%2==0){
                tmp.add("G");
                tmp.add(str.get(j));
                tmp.add("R");
            }else{
                tmp.add(str.get(j));
            }
        }
        str = tmp;
    }
    StringBuilder result = new StringBuilder();
    for(int i=0;i<str.size();i++){
        result.append(str.get(i));
    }
    return result.toString();
}
第二题   代码依赖
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int target = sc.nextInt();
        HashMap<Integer,ArrayList> map = new HashMap<>();
        while(sc.hasNext()) {
            String str = sc.next();
            String[] tmp = str.split(",");
            ArrayList<Integer> list = new ArrayList<>();
            for(int i=1;i<tmp.length;i++){
                list.add(Integer.valueOf(tmp[i]));
            }
            if(list.size()==0) continue;
            else map.put(Integer.valueOf(tmp[0]),list);
        }
        HashSet<Integer> set = new HashSet<>();
        set.add(target);
        boolean flag = false;
        while(!flag) {
            flag = true;
            for (int key : map.keySet()) {
                if (!set.contains(key)) {
                    ArrayList<Integer> list = map.get(key);
                    for (int i = 0; i < list.size(); i++) {
                        if (set.contains(list.get(i))) {
                            set.add(key);
                            flag = false;
                            break;
                        }
                    }
                }

            }
        }
        int res = 0;
        for(int key:map.keySet()){
            if(set.contains(key) && key!=target){
                res += key;
            }
        }
        System.out.println(res);
    }
}



#笔经##Java工程师##携程#
全部评论
赞!两题空白路过
点赞 回复
分享
发布于 2021-04-15 23:04
我输入数据按个回车,就循环卡在哪里了
点赞 回复
分享
发布于 2021-04-16 14:32
联想
校招火热招聘中
官网直投
回帖不能回代码,贴一下之前我的答案,正在准备面试,楼主一起加油 https://www.nowcoder.com/discuss/649098
点赞 回复
分享
发布于 2021-04-25 23:50
// 递归写了一段盖房子 public static void main(String[] args) {         int n = 4;         int len = (1 << n) - 1;         char[] tmp = new char[len];         getHouse(0, len, tmp, true);         System.out.println(Arrays.toString(tmp));     }     public static void getHouse(int start, int end, char[] tmp, boolean flag) {         if (start >= end) {             return;         }         int mid = (start + end) / 2;         tmp[mid] = flag ? 'R&(5134)#39; : 'G&#39;;         getHouse(start, mid, tmp, false);         getHouse(mid+1, end, tmp, true);     }
点赞 回复
分享
发布于 2021-04-27 14:22
携程校招笔试是考算法吗?会不会出那种八股文呀
点赞 回复
分享
发布于 2021-08-25 23:10

相关推荐

2 5 评论
分享
牛客网
牛客企业服务