目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
- 4、再输入
- 5、再输出
- 七、机考攻略
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
编写一个函数来查找字符串数组中的最长公共后缀,如果不存在公共后缀,返回固定字符串:@Zero。
补充说明:
- 字符串长度范围:[2,1000];
- 字符串中字符长度范围为:[1,126];
二、输入描述
[“abc” “bbc” “c”]
三、输出描述
c
四、解题思路
- 输入一个字符串数组;
- 通过java8 Stream表达式(简洁/方便/上档次)快速拆解输入行;
- 通过第一个作为参考字符串,与其它字符串比较;
- 暴力算法,倒取比较;
- 获取所有字符串拥有的相同的最长公共后缀;
- 如果长度不满足 or 字符不一致,结束循环;
- 输出最长公共后缀,因为倒序遍历添加,所以要反转一下。
五、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、说明
- 以第一个为参考字符串,与其他字符串进行比较;
- 查看所有字符串拥有的相同后缀;
送分题。
4、再输入
[“nezhajava”,“nezhapython”,“nezhac”]
5、再输出
@Zero
这么简单,简直就是送分题,大家一定要好好把握,机不可失失不再来。
打开idea,疯狂输出吧~~
七、机考攻略
三道中等难度题目,总分400分,前两道均为100分,后一道为200分,每道题的时间限制为1S(慎用暴力方法,实在没办法,也可!)。
机考分数是按照题目用例的通过数量的比例算分数,若有的题做不出来,可尽力去写,一些用例通过就有分数。
机考时长2个半小时,若以冲刺机考最高分为目的,则做题时间分配前两道题40分钟,最后一题70分钟(平时练习可以按照40分钟的时限)。
机考分数线根据招聘目标院校和非目标院校有不同,不同华为招聘部门也会有差异,比如前者机考通过线为150分,后者机考通过线为320分。
若以通过机考线为目的,根据自身情况来进行做题时长配置。
- 机考全程需要打开摄像头,摄像头中不能出现其他人或者宠物,带个小狗和你去考试,这有点过分了吧?
- 机考全程保证网络稳定;
- 若机考遇到刷到过的题目,不能照搬网上公开的代码,系统会对代码的相似度进行评估,会被系统判定作弊,建议代码相似度在80%以内;可以通过修改变量名,拆分算法步骤,提取公共方法等手法解决,你懂的~
🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。