深信服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 山西

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
1 8 评论
分享
牛客网
牛客企业服务