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

华为OD机试真题- 关联子串

该专栏题目包含两部分:
100 分值部分题目
200 分值部分题目
所有题目都会陆续更新,订阅防丢失

题目描述:

给定两个字符串str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。

若str1是str2的关联子串,请返回子串在str2的起始位置;
若不是关联子串,则返回-1。

条件:

  • 输入的字符串只包含小写字母;
  • 两个字符串的长度范围[1, 100,000]之间
  • 若str2中有多个str1的组合子串,请返回第一个子串的起始位置。

输入描述

输入两个字符串,分别为题目中描述的str1、str2。

输出描述

如果str1是str2的关联子串,则返回子串在str2中的起始位置。

如果str1不是str2的关联子串,则返回-1。

若str2中有多个str1的组合子串,请返回最小的起始位置。

示例

输入:

abc efghicabiii

输出:

5

说明:

str2包含str1的一种排列组合(“cab”),此组合在str2的字符串起始位置为5(从0开始计数)

示例2

输入:

abc efghicaibii

输出:

-1

说明:
“abc”字符串中三个字母的各种组合(abc、acb、bac、bca、cab、cba),str2中均不包含,因此返回-1

题解

思路一:对str1字符串排序,对于str2 用滑动窗口遍历,比较排序后的字符串是否相等
思路二:记录str1每个字符出现的次数,对于str2 用滑动窗口遍历,比较每个字符出现的次数是否相等

源码

import java.util.Arrays;public class SubString {static Input input ;static {input = new Input("abc efghicaibii");input = new Input("abc efghicabiii");}public static void main(String[] args) {String[] ss = input.nextLine().split(" ");char[] charArray = ss[0].toCharArray();Arrays.sort(charArray);String str = new String(charArray);String tar = ss[1];int left = 0;int right = left + str.length();while (right <= tar.length()) {char[] ar = tar.substring(left, right).toCharArray();Arrays.sort(ar);if (new String(ar).equals(str)) {System.out.println(left);return;}left++;right++;}System.out.println(-1);}
}
http://www.lryc.cn/news/471364.html

相关文章:

  • 云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航
  • QT 多语言转换 ts、qm
  • C++学习:类和对象(二)
  • 深度学习(五):语音处理领域的创新引擎(5/10)
  • 双曲函数(Hyperbolic functuons)公式
  • 【CSS/SCSS】@layer的介绍及使用方法
  • 我为什么投身于青少年AI编程?——打造生态圈(三)
  • 出海要深潜,中国手机闯关全球化有了新标杆
  • 百度SEO中的关键词密度与内容优化研究【百度SEO专家】
  • 如何用fastapi集成pdf.js 的viewer.html ,并支持 mjs
  • 文件相对路径与绝对路径
  • Linux 重启命令全解析:深入理解与应用指南
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第六十七章 Trusted Firmware-A 移植
  • `a = a + b` 与 `a += b` 的区别
  • mysqld.log文件过大,清理后不改变所属用户
  • v4.7+版本用户充值在交易统计中计算双倍的问题修复
  • [GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)
  • MODSI EVI 数据的时间序列拟合一阶谐波模型
  • Java:String类(超详解!)
  • 【日志】力扣13.罗马数字转整数 || 解决泛型单例热加载失败问题
  • Mybatis高级
  • 【spark】spark structrued streaming读写kafka 使用kerberos认证
  • 【脚本】B站视频AB复读
  • leetcode - 257. 二叉树的所有路径
  • python 相关
  • 静态分析2:控制流分析(构建CFG)
  • Linux 应用领域
  • FPM383C指纹模块超详解 附驱动
  • 若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)
  • .rmallox勒索病毒肆虐:如何有效防范与应对