华为OD机试真题 Java 实现【最长公共后缀】【2023 B卷 100分】,等于白送

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明
      • 4、再输入
      • 5、再输出
    • 七、机考攻略

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

编写一个函数来查找字符串数组中的最长公共后缀,如果不存在公共后缀,返回固定字符串:@Zero。

补充说明:

  1. 字符串长度范围:[2,1000];
  2. 字符串中字符长度范围为:[1,126];

二、输入描述

[“abc” “bbc” “c”]

三、输出描述

c

四、解题思路

  1. 输入一个字符串数组;
  2. 通过java8 Stream表达式(简洁/方便/上档次)快速拆解输入行;
  3. 通过第一个作为参考字符串,与其它字符串比较;
  4. 暴力算法,倒取比较;
  5. 获取所有字符串拥有的相同的最长公共后缀;
  6. 如果长度不满足 or 字符不一致,结束循环;
  7. 输出最长公共后缀,因为倒序遍历添加,所以要反转一下。

五、Java算法源码

package com.guor.od;

import java.util.Scanner;

public class OdTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] arr = sc.nextLine()
                .replace("[", "")
                .replace("]", "")
                .replace("\"", "")
                .split(",");

        StringBuilder builder = new StringBuilder();
        // 通过第一个作为参考字符串,与其它字符串比较
        String firstStr = arr[0];
        // 遍历第一个字符串
        for (int i = 0; i < firstStr.length(); i++) {
            // 最后一个字符,倒取比较
            char c = firstStr.charAt(firstStr.length() - i - 1);
            // 通过第一个作为参考字符串,与其它字符串比较,所以此处略过第一个字符串
            for (int j = 1; j < arr.length; j++) {
                // 其它字符串
                String str = arr[j];
                // 如果长度不满足 or 字符不一致,结束循环
                if (str.length() <= i || c != str.charAt(str.length() - i - 1)) {
                    // 输出最长公共后缀,因为倒序遍历添加,所以要反转一下
                    System.out.println(builder.length() == 0 ? "@Zero" : builder.reverse());
                    return;
                }
            }
            builder.append(c);
        }

        // 输出最长公共后缀,因为倒序遍历添加,所以要反转一下
        System.out.println(builder.length() == 0 ? "@Zero" : builder.reverse());
    }
}

六、效果展示

1、输入

[“javanezha”,“pythonnezha”,“cnezha”]

2、输出

nezha

3、说明

  1. 以第一个为参考字符串,与其他字符串进行比较;
  2. 查看所有字符串拥有的相同后缀;

送分题。

华为OD机试真题 Java 实现【最长公共后缀】【2023 B卷 100分】,等于白送_第1张图片

4、再输入

[“nezhajava”,“nezhapython”,“nezhac”]

5、再输出

@Zero

这么简单,简直就是送分题,大家一定要好好把握,机不可失失不再来。

打开idea,疯狂输出吧~~

华为OD机试真题 Java 实现【最长公共后缀】【2023 B卷 100分】,等于白送_第2张图片

七、机考攻略

三道中等难度题目,总分400分,前两道均为100分,后一道为200分,每道题的时间限制为1S(慎用暴力方法,实在没办法,也可!)。

机考分数是按照题目用例的通过数量的比例算分数,若有的题做不出来,可尽力去写,一些用例通过就有分数。

机考时长2个半小时,若以冲刺机考最高分为目的,则做题时间分配前两道题40分钟,最后一题70分钟(平时练习可以按照40分钟的时限)。

机考分数线根据招聘目标院校和非目标院校有不同,不同华为招聘部门也会有差异,比如前者机考通过线为150分,后者机考通过线为320分。

若以通过机考线为目的,根据自身情况来进行做题时长配置。

  • 机考全程需要打开摄像头,摄像头中不能出现其他人或者宠物,带个小狗和你去考试,这有点过分了吧?
  • 机考全程保证网络稳定;
  • 若机考遇到刷到过的题目,不能照搬网上公开的代码,系统会对代码的相似度进行评估,会被系统判定作弊,建议代码相似度在80%以内;可以通过修改变量名,拆分算法步骤,提取公共方法等手法解决,你懂的~

下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,程序人生,数据库,spring,学习)