深信服9月1日笔试

编程第一题:翻转字符串,输入:abcdefg b f 输出:afedcbg
  


  public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] subStr = s.split(" ");
        System.out.println(reverseStr(subStr[0],subStr[1].charAt(0),subStr[2].charAt(0)));
    }
//    这块是截取start---end之间的字符串
    public static String reverseStr(String s,char a,char b){
        int start = -1;
        int end = -1;
        for (int i = 0; i <s.length() ; i++) {
            if(s.charAt(i)==a){
                start=i;
            }
            if(s.charAt(i)==b&&start!=-1){
                end=i;
            }
        }
        String subStr = s.substring(start,end+1);
//        StringBuffer是可以存储和操作字符串
        StringBuffer sb = new StringBuffer(subStr).reverse();
        return s.substring(0,start)+sb+s.substring(end+1,s.length());
    }

编程第二题:
输入描述: * 输入为一行,n个数字,用空格隔开 * 前面n-1个数字组成,题目中的数组arr * n个数字为k * 输出为 我们需要找到的数字 * 输入: 2 1 4 3 6 5 0 7 3   arr=[2 1 4 3 6 5 0 7] k=3(回合数) arr[0]=2 arr[1]=1 赢得数字:2 arr=[2 4 3 6 5 0 7 1] * 输出:6
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
//        如果数组中有空格,先用String做输入,再转化为字符数组,这样就可以取长度
        String[] s = str.split(" ");
//        动态数组
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i <s.length-1 ; i++) {
            list.add(Integer.parseInt(s[i]));
        }
//        k是数组中最后一个数字 回合数
        int k =Integer.parseInt(s[s.length-1]);
        int result = getwinner(list,k);
        System.out.println(result);

    }
    public static int getwinner(List<Integer> list,int k){
//        取前两个中最大的  k是回合次数
        int pre = Math.max(list.get(0),list.get(1));
//        回合数是1
        if(k==1){
            return pre;
        }
//        次数 已经是赢得,所以初始化为 1
        int count = 1;
        int max = pre;
//        从第二个开始比较
        for (int i = 2; i <list.size() ; i++) {
//            当前数
            int cur = list.get(i);
//            最大数大于当前数,不动,pre的计数加1
            if(pre>cur){
                count++;
                if(count==k){
                    return  pre;
                }
            }else {
//                之前的最大数<当前数,当前数是pre
                pre = cur;
//                重新计数
                count = 1;
            }
            max = Math.max(cur,max);

        }
        return max;
    }
第三题:路径,A1 B1 3|   B1 A1 1|   B1 C1 4|  A1 C1 5|  C1 B1 9 输出B1  不会,太难啦



#深信服笔试题#
全部评论
路径题,牛客上有很多的,可以练练,我最近就在刷题
点赞 回复 分享
发布于 2022-10-01 11:11 山西

相关推荐

点赞 评论 收藏
分享
06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务