当前位置: 首页 > article >正文

宇信科技JAVA笔试(2024-11-26日 全部AK)

唯一一次笔试全部AK的,百分之百,还有十分钟就直接交卷了,思路可能并不是最好的,但是都100%啦。

第1题:问n!得到的值中0的个数,比如7!为5040,输出为2

package 第一题;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 将所有数据记录在0-26的数组中,记录个数,这样就会将O(n^3)复杂度转化为O(26^3)
        // 核心就是最终的值和字符串数组无关。 而字符串都是小写,长度26的数组就可以写出来了
//        while (true){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int result = 1;
            // 计算总和
            for(int i = 1; i <= n; i++){
                result = result * i;
            }
            System.out.println(result);
            // 计算0的个数
            int count = 0;
            while (result != 0){
                if(result % 10 == 0)
                    count++;
                result = result / 10;
            }
            System.out.println(count);
//        }
    }
}

第2题:相邻字符串可以进行变化,比如a可以变成b,a还可以变成z。问给一个字符串,最少执行多少次变化,可以使得字符串都是一样的。其中字符串都是小写字符。

package 第二题;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
//        while (true){
            // 将所有数据记录在0-26的数组中,记录个数
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            int count = 0;
            int[] data = new int[26];
            // 将所有的数据记录在列表中
            for (int i = 0; i < s.length(); i++) {
                data[s.charAt(i) - 'a']++;
            }
            System.out.println(doubleMinValue(data));
//        }
    }

    public static long doubleMinValue(int[] data){
        long result = Integer.MAX_VALUE;
        for (int i = 0; i < 26; i++) {
            if(data[i] == 0)
                continue;
            // 如果选择第i个作为中心,计算最小变化量
            long count = 0;
            // 开始进行计算
            for (int j = 0; j < 26; j++) {
                if(i == j || data[j] == 0)
                    continue;
                if(i < j){
                    // 正向值
                    int left = j - i;
                    // 负向值
                    int right = 26 - j + i;
                    count = Math.min(left, right) * data[j] + count;
                }else {
                    int left = j + 26 - i;
                    int right = i -j;
                    count = Math.min(left, right) * data[j] + count;
                }
            }
            if(result > count)
                result = count;
        }
        return result;
    }
}

第3题:格式化输出问题

package 第三题;

import java.util.Scanner;

public class Main {
    public static void draw(int count, String line) {
        for (int i = 0; i < count; i++) {
            System.out.print(line);
        }
    }

    // 画出第一行 ...........
    public static void draw1(int count) {
        for (int i = 0; i < count; i++) {
            draw(count, "...........");
            System.out.println();
        }
    }

    // 画出第二行 ..*******..
    public static void draw2(int count) {
        for (int i = 0; i < count; i++) {
            // 画出左边
            draw(count, "..");
            // 画出中间
            draw(count, "*******");
            // 画出右边
            draw(count, "..");
            System.out.println();
        }
    }

    // 画出第三行 ..*..*..*..
    public static void draw3(int count) {
        for (int i = 0; i < count; i++) {
            draw(count, "..");
            draw(count, "*");
            draw(count, "..");
            draw(count, "*");
            draw(count, "..");
            draw(count, "*");
            draw(count, "..");
            System.out.println();
        }
    }

    // 画出第四行 ..*******..
    public static void draw4(int count) {
        draw2(count);  // 与第2行一样
    }

    // 画出第5行 ..*..*..*..
    public static void draw5(int count) {
        draw3(count);
    }

    // 画出第6行
    public static void draw6(int count) {
        draw2(count);
    }

    // 画出第7行 .....*.....
    public static void draw7(int count) {
        for (int i = 0; i < count; i++) {
            // 左
            draw(count, ".....");
            // 中
            draw(count, "*");
            // 右
            draw(count, ".....");
            System.out.println();
        }
    }

    // 8
    public static void draw8(int count) {
        draw2(count);
    }

    // 9 .....*.....
    public static void draw9(int count) {
        draw7(count);
    }

    // 10 .*********.
    public static void draw10(int count) {
        for (int i = 0; i < count; i++) {
            draw(count, ".");
            draw(count, "*********");
            draw(count, ".");
            System.out.println();
        }
    }

    // 11 .*********.
    public static void draw11(int count) {
        draw1(count);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 思路:分行进行输出,每一行进行私有化定义
        int at = sc.nextInt();
        draw1(at);
        draw2(at);
        draw3(at);
        draw4(at);
        draw5(at);
        draw6(at);
        draw7(at);
        draw8(at);
        draw9(at);
        draw10(at);
        draw11(at);
    }
}


http://www.kler.cn/a/416580.html

相关文章:

  • 摄影相关常用名词
  • Day31 贪心算法 part05
  • 【二维动态规划:交错字符串】
  • 怎么选拔人才
  • 每日速记10道java面试题04
  • 新手开始学习编程选择什么软件比较好?
  • 【算法day3】链表:增删改查及其应用
  • MySQL数据库表的操作
  • MySQL更新JSON字段key:value形式
  • Flink解决延迟数据问题
  • PostgreSQL 中Identity Columns生成一个唯一的标识符
  • Grafana插件安装并接入zabbix数据源
  • 速盾高防cdn支持移动端独立缓存
  • 基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现
  • Go语言技巧:快速统一字符串中的换行符,解决跨平台问题
  • T507 buildroot linux4.9之RTC8563开发调试
  • SQLModel与FastAPI结合:构建用户增删改查接口
  • 海盗王用golang重写的AccountServer功能
  • Facebook Audience Network优化指南
  • 学习笔记042——如何通过IDEA中自带的数据库组件导出MySQL数据
  • Jmeter测试工具的安装和使用,mac版本,jmeter版本5.2.1
  • 《向量数据库指南》——稀疏激活:解锁大数据处理新纪元
  • 【游戏引擎之路】登神长阶(十五)——DirectX12龙书:行百里者半九十(学习阶段完结)
  • 介绍一下atoi(arr);(c基础)
  • 汽车驾校寒冬,新增无人机飞手培训技术详解
  • GPT打字机效果—— fetchEventSouce进行sse流式请求