中国电信2021秋招笔试

1.求没出现重复字符的最长字串长度

(我发现每次笔试时候都来不及好好想,就只能暴力,有一些暴力也没过去)

暴力

public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        String input = cin.nextLine();
        int maxLength = 1;
        ArrayList<Character> list = new ArrayList<>();
        int index = 0;
        while (index<=input.length()-1){
            int length=0;
            list.clear();
            int j = index;
            for(;j<input.length();j++){
                if(!list.contains(input.charAt(j))){
                    length++;
                    list.add(input.charAt(j));
                }else {
                    if(length>maxLength) maxLength = length;
                    index++;
                    break;
                }
            }
            if(j>=input.length()){
                if(length>maxLength) maxLength = length;
                index++;
            }
        }
        System.out.println(maxLength);
    }

2.现在有6种杯子,其容积大小分为1 10 20 50 100 。假设水足够多,编写程序求装满体积为
N的桶(N为0~10000的非负整数)的不同组合的个数。

先贴一个暴力法只通过百分之75,其余超时的答案。(据说换成long再考虑空值可以到100%?没机会试了)

 public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] array = {100,50,20,10,5,1};
        int[] max = new int[array.length];
        for(int i=0;i<array.length;i++){
            max[i] = n/array[i];
        }
        int result = 0;
        for(int i100=0;i100<=max[0];i100++){
            if(i100 * 100 > n) break;
            for(int i50=0;i50<=max[1];i50++){
                if(i100*100+i50*50>n) break;
                for(int i20=0;i20<=max[2];i20++){
                    if(i100*100+i50*50+i20*20>n) break;
                    for(int i10=0;i10<=max[3];i10++){
                        if(i100*100+i50*50+i20*20+i10*10>n) break;
                        for(int i5=0;i5<=max[4];i5++){
                            if(i100*100+i50*50+i20*20+i10*10+i5*5>n) break;
                            for(int i1=0;i1<=max[5];i1++){
                                if(i100*100+i50*50+i20*20+i10*10+i5*5+i1>n) break;
                                result++;
                            }
                        }
                    }
                }
            }
        }
        System.out.println(result);
    }

牛客网看到的答案

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n == 0) {
            System.out.println(0);
            return;
        }
        int[] v = new int[]{1, 5, 10, 20, 50, 100};
        long[] dp = new long[n + 1];
        dp[0] = 1;
        for (int i : v) {
            for (int j = i; j <= n; j++) {
                dp[j] += dp[j - i];
            }
        }
        System.out.println(dp[n]);
    }
}

3.本来是杂乱无章的一个int(比如是4 7 8 9),输入给出每个分组1 2 0 1 输出 0 1 1 2这样的非递减数列(实际就是排序)但是题里没说除了0 1 2还有别的分组!我竟然没有排序!而是去统计0 1 2 的数量 然后输出!最后只通过60% 

从题里真的看不出来 除了0 1 2还有别的组号 真是哭了

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供南方电网秋招笔试真题的具体内容,因为我无法获取或提供特定公司的招聘信息。但是,我可以给你一些关于南方电网秋招笔试的一般性建议和常见题型。 南方电网秋招笔试通常包括以下几个方面的内容: 1. 专业知识测试:涉及电力工程、电气工程、能源与动力工程等相关专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 2. 数学与逻辑推理:包括数学运算、概率统计、逻辑推理等方面的题目。 3. 英语能力测试:主要考察英语阅读理解、词汇量和语法等方面的能力。 4. 综合素质测试:主要考察应聘者的综合素质,包括综合分析能力、创新思维、团队合作等方面。 在备考南方电网秋招笔试时,建议你注意以下几点: 1. 熟悉岗位要求:了解南方电网对应聘者的要求,明确自己所应聘的岗位所需的专业知识和技能。 2. 多做模拟题:通过做一些模拟题来熟悉题型和考试时间,提高解题速度和准确性。 3. 复习重点知识:重点复习与岗位相关的专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 4. 提高英语能力:加强英语阅读理解和词汇量的积累,可以通过阅读英文文章、做题和听力练习等方式提高英语能力。 5. 注重综合素质:在备考过程中,注重培养自己的综合素质,包括综合分析能力、创新思维和团队合作等方面的能力。 希望以上建议对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值