算法题--华为od机试考试(字符串筛选排序、非严格递增连续数字序列、最大括号深度)

华为OD机试算法题解析:排序、序列与括号

目录

字符串筛选排序

题目描述

输入描述

输出描述

示例1

输入

输入

说明

示例2

输入

输出

说明

解析

答案

非严格递增连续数字序列

题目描述

输入描述

输出描述

说明

解析

答案

最大括号深度

题目描述

输入描述

输出描述

示例1

输入

输出

说明

示例2

输入

输出

说明

示例3

输入

输出

说明

示例4

输入

输出

说明

示例5

输入

输出

说明

解析

答案


字符串筛选排序

考察排序和字符串转ASCII码值方法

题目描述

输入一个由n个大小写字母组成的字符串 按照ASCII码值从小到大进行排序规则, 查找字符串中第k个最小ASCII码值的字母(k>=1), 输出该字母所在字符串的位置索引(字符串的第一个位置索引为0)。

k如果大于字符串长度,则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母,则输出字母的最小位置索引。

输入描述

第一行输入一个由大小写字母组成的字符串

第二行输入k,k必须大于0,k可以大于输入字符串的长度。

输出描述

输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。 k如果大于字符串长度,则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复,则输出该字母的最小位置索引。

示例1

输入

AbCdeFG

3

输入

5

说明

根据ASCII码值排序,第三个ASCII码值的字母为F, F在字符串中位置索引为5(0为字符串的第一个字母位置索引)

示例2

输入

fAdDAkBbBq

4

输出

6

说明

根据ASCII码值,前4个字母为AABB,由于B重复,则只取B的(第一个)最小位置索引6,而不是第二个B的位置索引8.

解析

将字符串按ASCII码值从小到大排序,找到第k大的字符,然后去原字符串中搜索第一个出现该字符的序号。

答案

function codeSort(str, k) {
    let len = str.length
    // 大于长度取最大的
    if (k > len) {
        k = len
    }
    // 根据ASCII码值从小到大排序
    let arr = str.split('').sort((a, b) => a.charCodeAt() - b.charCodeAt())
    let target = arr[k - 1]
    return str.indexOf(target)
}
console.log(codeSort('AbCdeFG', 3))
console.log(codeSort('fAdDAkBbBq', 4))

非严格递增连续数字序列

考察转换思想,简单题。

题目描述

输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列长度(比如12234属于非严格递增数字序列)。

输入描述

abc2234019A334bc

输出描述

4

说明

2234为最长的非严格递增连续数字序列,所以长度为4

解析

遍历字符串,当为数字的时候判断是否为连续递增的序列,记录长度。当为字符时,序列置空。

答案

function ascendSequence(str) {
    let max = 0
    let tmp = 0
    let cur = ''
    for (let a of str) {
        if (!Number.isNaN(Number(a))) {
  
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信制、分布式事务实现和系统性能优化部分,结合代码调与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
数字图像隐写术是一种将秘密信息嵌入到数字图像中的技术,它通过利用人类视觉系统的局限性,在保持图像视觉质量的同时隐藏信息。这项技术广泛应用于信息安全、数字水印和隐蔽通信等领域。 典型隐写技术主要分为以下几类: 空间域隐写:直接在图像的像素值中进行修改,例如LSB(最低有效位)替换方法。这种技术简单易行,但对图像处理操作敏感,容易被检测到。 变换域隐写:先将图像转换到频域(如DCT或DWT域),然后在变换系数中嵌入信息。这类方法通常具有更好的鲁棒性,能抵抗一定程度的图像处理操作。 自适应隐写:根据图像的局部特性动态调整嵌入策略,使得隐写痕迹更加分散和自然,提高了安全性。 隐写分析技术则致力于检测图像中是否存在隐藏信息,主要包括以下方法: 统计分析方法:检测图像统计特性的异常,如直方图分析、卡方检测等。 器学习方法:利用分类器(如SVM、CNN)学习隐写图像的区分特征。 深度学习方法:通过深度神经网络自动提取隐写相关特征,实现端到端的检测。 信息提取过程需要密钥或特定算法,通常包括定位嵌入位置、提取比特流和重组信息等步骤。有效的隐写系统需要在容量、不可见性和鲁棒性之间取得平衡。 随着深度学习的发展,隐写与反隐写的技术对抗正在不断升级,推动了这一领域的持续创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值