华为OD机试真题 - 字符串比较 (D卷,200分)

题目描述

给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:

  1. 该连续子串在A和B中的位置和长度均相同。
  2. 该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值
  3. 目录

    题目描述

    输入描述

    输出描述

    用例

    题目解析

    Java算法源码

    JS算法源码

    Python算法源码

    C算法源码

    华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为400分,150分钟,机试是在牛客考试,练习的时候也可以在牛客网练习,提前熟悉操作

    https://ac.nowcoder.com/acm/contest/5652/K

    点击上方链接进入牛客练习界面,可以自定义题目,自定义输入、输出等等,华为OD真实机试环境,非其他第三方平台模拟。

输入描述

输入为三行:

  • 第一行为字符串A,仅包含小写字符,1 <= A.length <=1000。
  • 第二行为字符串B,仅包含小写字符,1 <= B.length <=1000。
  • 第三行为正整数V,0<= V <= 10000。

输出描述

字符串最大连续子串的长度,要求该子串|A[i] – B[i]|之和小于等于V。

用例

题目解析

  1. 首先,我们需要遍历字符串A和B,计算每个位置上字符的ASCII码之差的绝对值。
  2. 然后,我们需要找到满足条件的连续子串,即该子串的|A[i] - B[i]|之和小于等于V。
  3. 最后,我们需要找到满足条件的最大连续子串的长度。

Java算法源码

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    String a = sc.nextLine();
    String b = sc.nextLine();
    int v = Integer.parseInt(sc.nextLine());

    System.out.println(getResult(a, b, v));
  }

  public static int getResult(String a, String b, int v) {
    int n = a.length();
 
    int[] preSum = new int[n + 1];
    for (int i = 1; i <= n; i++) {

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试题库D卷 文章被收录于专栏

2024年5-11月份考的D卷,不用再看AB卷,CD卷题目一样。多种语言解法,欢迎提供更好的解法。

全部评论
征集创新解法,被采纳可赠送一本全新技术书籍,欢迎评论区投稿
点赞
送花
回复 分享
发布于 06-30 00:19 广东

相关推荐

华为 OD N*14 硕士其他
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务