如何在华为OD机试中获得满分?Java实现【差值数组不同的字符串】一文详解!

news/2024/7/7 19:43:34

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
    • 2. 输入描述
    • 3. 输出描述
    • 4. Java算法源码
    • 5. 测试
    • 6.解题思路

1. 题目描述

给你一个字符串数组 words ,每一个字符串长度都相同,令所有字符串的长度都为 n

每个字符串 words[i] 可以被转化为一个长度为n - 1的 差值整数数组 difference[i] ,其中对于 0 <= j <= n - 2difference[i][j] = words[i][j+1] - words[i][j]。注意两个字母的差值定义为它们在字母表中 位置 之差,也就是说'a' 的位置是 0 ,‘b’ 的位置是 1 ,‘z’ 的位置是 25 。

比方说,字符串 “acb” 的差值整数数组是 [2 - 0, 1 - 2] = [2, -1]
words 中所有字符串 除了一个字符串以外 ,其他字符串的差值整数数组都相同。你需要找到那个不同的字符串。

请你返回 words中 差值整数数组 不同的字符串。

2. 输入描述

words = ["adc","wzy","abc"]

3. 输出描述

"abc"

解释:

  • “adc” 的差值整数数组是 [3 - 0, 2 - 3] = [3, -1] 。
  • “wzy” 的差值整数数组是 [25 - 22, 24 - 25]= [3, -1] 。
  • “abc” 的差值整数数组是 [1 - 0, 2 - 1] = [1, 1] 。
    不同的数组是 [1, 1],所以返回对应的字符串,“abc”。

4. Java算法源码

 public String oddString(String[] words) {
    int n = words[0].length();
    int[] difference = new int[n - 1];
    
    // 计算第一个字符串的差值整数数组
    for (int j = 0; j < n - 1; j++) {
        difference[j] = words[0].charAt(j + 1) - words[0].charAt(j);
    }
    
    // 遍历其他字符串,找到差值整数数组不同的字符串
    for (int i = 1; i < words.length; i++) {
        for (int j = 0; j < n - 1; j++) {
            if (words[i].charAt(j + 1) - words[i].charAt(j) != difference[j]) {
                return words[i];
            }
        }
    }
    
    return "";  // 如果所有字符串的差值整数数组都相同,则返回空字符串
    }

在这里插入图片描述

5. 测试

示例输入示例输出
words = [“aaa”,“bob”,“ccc”,“ddd”]“bob”
words = [“adc”,“wzy”,“abc”]“abc”

6.解题思路

  1. 找到一个字符串的差值整数数组作为基准数组,可以选择第一个字符串的差值整数数组作为基准。
  2. 遍历剩余的字符串,逐个比较它们的差值整数数组与基准数组是否相同。
  3. 如果找到差值整数数组不同的字符串,则返回该字符串。
  4. 如果所有字符串的差值整数数组都相同,则返回空字符串。

使用一个示例来说明解题思路:

假设输入的字符串数组为 words = ["adc","wzy","abc"],每个字符串的长度都为 3。

首先,计算第一个字符串 "adc" 的差值整数数组:[3 - 0, 2 - 3] = [3, -1]

然后,遍历剩余的字符串 "wzy""abc"

  • "wzy" 的差值整数数组为 [25 - 22, 24 - 25] = [3, -1],与基准数组 [3, -1] 相同。
  • "abc" 的差值整数数组为 [1 - 0, 2 - 1] = [1, 1],与基准数组 [3, -1] 不同。

因此,差值整数数组不同的字符串是 "abc"

综上所述,解题思路如上所示。

下面是思路的流程图表示:

在这里插入图片描述

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1169451.html

相关文章

C++线程

多线程 常见函数 构造函数 函数对应作用thread() noexcept空线程&#xff0c;什么都不做&#xff0c;noexcept作用是标识该函数不会抛出任何异常(简化代码生成过程)template <class Fn, class… Args> explicit thread(Fn&& fn, Args&&… args)创建一…

VB一款实现图像浏览的ActiveX控件

利用GDI实现浏览图片的ActiveX控件&#xff0c;功能:支持读取PNG格式的图片&#xff0c;支持鼠标飞轮对图片进行缩放&#xff0c;镜像&#xff0c;移动等功能&#xff0c;其中用到了功能强大的GDI&#xff0c;GDI&#xff0c;对初及vb编程爱好者运用GDI-API有很大的研究价值&am…

Python实现温度植被干旱指数(TVDI)的计算

前言 温度植被干旱指数&#xff08;Temperature Vegetation Dryness Index&#xff0c;TVDI&#xff09;是一种基于光学与热红外遥感通道数据进行植被覆盖区域表层土壤水分反演的方法。作为同时与归一化植被指数(NDVI)和地表温度(LST)相关的温度植被干旱指数(TVDI)可用于干旱监…

【leetcode刷题】剑指offer基础版(完结)

leetcode刷题笔记—剑指offer 剑指 Offer 05. 替换空格 class Solution { public:string replaceSpace(string s) {int len s.size();string g;for(int i 0; i < len; i){if(s[i] ){g "%20";continue;}g s[i];}return g;} };剑指 Offer 58 - II. 左旋转字…

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

每一个测试人员都应该了解每种框架的优缺点&#xff0c;以帮助你的团队更好地确定最适合的测试的框架&#xff0c;以达到事半功倍。 什么是测试自动化框架? 自动化测试框架就是用于测试自动化的框架。具体来说&#xff0c;它提供了自动化测试用例编写、自动化测试用例执行、自…

设计模式实战 - 工厂模式实现总览页面工作进展指标查询

设计模式实战 - 工厂模式实现总览页面工作进展指标查询 1. 请求入口 ProgressController PostMapping("/progress/indicators") ApiOperation(value "总览工作进展") PreAuthorize("hasAnyAuthority(superAdmin,overViewQuery,incidentQuery,alert…

01-JSON-概述

JSON&#xff08;JavaScript Object Notation&#xff09;是一种文本格式的数据交换标准&#xff0c;由Douglas Crockford发明。它可以表示简单的数据类型&#xff0c;如数字、字符串、布尔值和null&#xff0c;以及复杂的数据类型&#xff0c;如对象和数组等。JSON被广泛应用于…

行业报告 | 2022文化科技十大前沿应用趋势(下)

原创 | 文 BFT机器人 04 商业创新 趋势7&#xff1a;区块链技术连接传统文化&#xff0c;数字藏品市场在探索中发展 核心内容&#xff1a; 2022年&#xff0c;数字藏品在区块链技术的助力下应运而生。狭义的数字藏品是指使用区块链技术、基于特定的文化资源所生成唯一的数字凭…