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

821. 字符的最短距离 - 力扣

1. 题目

给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。

返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。

两个下标 i 和 j 之间的 距离 为 abs(i - j) ,其中 abs 是绝对值函数。

2. 示例

3. 分析 

我们先尝试一下暴力解法:将目标字符每次出现的位置保存到数组中,然后遍历字符串依次比较每个字符与目标字符每次出现的位置进行比较,寻找较小值即可

class Solution {
public:vector<int> shortestToChar(string s, char c) {vector<int> index;vector<int> ans;int n = s.size();// 记录目标字符出现的位置for(int i = 0; i < n; i++){if(s[i] == c){index.push_back(i);}}// 遍历字符串,对每个字符与目标字符出现下标进行比较,寻找较小值for(int i = 0; i < n; i++){int minres = INT_MAX;for(int j = 0; j < index.size(); j++){minres = min(minres, abs(index[j]-i));}ans.push_back(minres);}return ans;}
};

时间复杂度:O(N2)


能不能做到 O(N),可以的:

问题可以转换成,对 每个字符s[i] 的下标 i,求

  • 每个字符s[i]到其左侧最近的字符 c 的距离。
  • 每个字符s[i]到其右侧最近的字符 c 的距离。

这两者的较小值。

分别对字符串从左往右、从右往左遍历。

从左往右:在遍历的同时记录二者的距离,也需更新目标字符的下标。但在刚开始遍历时,目标字符可能不存在,所以二者距离也因此不能记录,所以为了记录二者的距离,我们可以使用 -n 初始化目标字符下标,这里 n 是 字符串的长度,距离就为 abs(index - i)。若找到第一个目标字符,二者距离也为 abs(index - i)。

从右往左:同理。初始化目标字符下标为 2n这里 n 是 字符串的长度。顺便比较此时二者距离与从左往右遍历时二者距离哪个为较小者。

class Solution {
public:vector<int> shortestToChar(string s, char c) {int n = s.size();vector<int> ans(n);// 从左往右for(int i = 0, index = -n; i < n; i++){if(s[i] == c) index = i;ans[i] = i - index;}// 从右往左for(int i = n - 1, index = 2*n; i >= 0; i--){if(s[i] == c) index = i;ans[i] = min(ans[i], index - i);}return ans;}
};

相关文章:

821. 字符的最短距离 - 力扣

1. 题目 给你一个字符串 s 和一个字符 c &#xff0c;且 c 是 s 中出现过的字符。 返回一个整数数组 answer &#xff0c;其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为 abs(i - j) &#xff0c…...

BI工具如何为金融行业带来变革?金融行业营销管理策略大揭秘

当今数字化时代&#xff0c;金融行业正经历着前所未有的变革。随着大数据、人工智能、区块链等新兴技术的兴起&#xff0c;金融机构正面临着重新定义服务模式、风险管理和客户体验的挑战。商业智能&#xff08;BI&#xff09;作为这一变革的关键驱动力&#xff0c;已经成为金融…...

操作系统 - 计算机系统概述

事前提一嘴 室友考完研了&#xff0c;下一年就是我了&#xff0c;真不想和他们一起考&#xff0c;压力太大了&#xff0c;这里分享一点笔记吧 采用王道考研的书以及视频&#xff0c;去掉了一些书上的废话&#xff0c;加上了视频中的重点&#xff0c;最后总结出来的 如有侵权&a…...

[论文笔记]REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

引言 今天带来一篇经典论文REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS的阅读笔记&#xff0c;论文中文意思是 在语言模型中协同推理和行动。 虽然大型语言模型(LLMs)在语言理解和互动决策任务中展现出强大的能力&#xff0c;但它们在推理(例如思维链提示)和…...

[]下标的意义

数组&#xff1a; int array[10]; array[0]获取的是值&#xff0c;还是引用&#xff1f; std::map<int,string> m_map; m_map[0]返回的是引用还是值&#xff0c;还是指针。 #include <iostream> #include <map> #include <vector> #include <al…...

去重复记录和排序——kettle开发09

一、去除重复记录 去除重复记录&#xff0c;就是将数据流中的数据进行字段比较&#xff0c;从而去掉重复值的过程。去除重复记录的前提是需要将数据流中的数据进行排序&#xff0c;然后再进行去重操作。 去除重复记录的逻辑是&#xff0c;如下图&#xff0c;我们将需要比较的…...

中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!

2024年5月14日&#xff0c;为进一步深化合作&#xff0c;促进业务共同发展&#xff0c;实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…...

基础—SQL—DML(数据操作语言)插入数据

一、介绍 分类全称说明DMLData Manipulation Language数据操作语言。用来对数据库表中的数据进行增删改(插入、删除、修改) 则增、删、改是三个操作也就对应着三个关键字&#xff0c;分别是&#xff1a; 添加数据&#xff1a;&#xff08; INSERT &#xff09;修改数据&#…...

【改變,是面對的開始】

改變&#xff0c;不是為了逃避無法解決的困境&#xff0c;而是為了面對心靈深處最懼怕的聲音。 她離開宛如人間天堂的義大利&#xff0c;轉往物質相對匱乏的印度&#xff0c;想藉由清修的方式&#xff0c;理清混亂的內在&#xff0c;重新與自己對話。 赫然發現&#xff0c;認…...

AI大模型实现德语口语练习

利用AI大模型实现德语口语练习的应用需要整合多种技术和资源&#xff0c;以确保学生能够获得全面、互动和有效的学习体验。以下是实现德语口语练习应用的详细流程和技术要点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 实现流程 …...

一文读懂npm i的命令以及作用

目录 1. 基本知识2. 常见用法 1. 基本知识 npm i 是 Node Package Manager (npm) 的一个命令&#xff0c;用于安装 Node.js 项目依赖的包 是 npm install 的简写形式&#xff0c;功能完全相同 详细解析 npm&#xff1a; npm 是 Node.js 的包管理工具&#xff0c;用于安装、共…...

You don‘t have enough free space或者no space left on device异常

1.磁盘空间不足 Linux安装软件显示 You dont have enough free space 或者docker拉镜像时&#xff0c;出现磁盘空间不足的情况 no space left on device 如果你是ubuntu系统。查看磁盘空间 df -h 多半是这个目录满了/dev/mapper/ubuntu--vg-ubuntu--lv 大多情况我们只希望扩…...

饮料添加剂新型褪色光照试验仪器太阳光模拟器

太阳光模拟器的定义和功能 太阳光模拟器是一种高科技设备&#xff0c;它可以模拟太阳光的光谱、光强和光照条件&#xff0c;用于实验室环境中对太阳能电池、光电器件以及其他需要太阳光条件的设备和材料进行评估。太阳光模拟器的主要功能包括模拟太阳光的光谱分布、辐照度、光…...

ElasticSearch - 删除已经设置的认证密码(7.x)

文章目录 Pre版本号 7.x操作步骤检查当前Elasticsearch安全配置停止Elasticsearch服务修改Elasticsearch配置文件删除密码重启Elasticsearch服务验证配置 小结 Pre Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问 版本号 7.x ES7.x 操作步骤 …...

9.4 Go语言入门(运算符)

Go语言入门&#xff08;运算符&#xff09; 目录三、运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符7. 运算符优先级 目录 Go 语言&#xff08;Golang&#xff09;是一种静态类型、编译型语言&#xff0c;由 Google 开发&#xff0c;专注…...

CLIP 源码分析:simple_tokenizer.py

tokenizer的含义 from .clip import *引入头文件时为什么有个. 正文 import gzip import html import os from functools import lru_cacheimport ftfy import regex as re# 上面的都是头文件# 这段代码定义了一个函数 default_bpe()&#xff0c;它使用了装饰器 lru_cache()。…...

AWS安全性身份和合规性之Shield

shield&#xff1a;盾(牌);(保护机器和操作者的)护罩&#xff0c;防护屏&#xff0c;挡板;屏障;保护物;&#xff08;警察的&#xff09;盾形徽章;保护人;掩护物;盾形纹徽;盾形奖牌; AWS Shield是一项AWS托管的DDoS&#xff08;Distributed Denial of Service&#xff0c;分布式…...

Midjourney入门篇 | 打造最逼真的照片(强烈推荐)

强烈推荐&#xff1a;如何用Midjourney打造最逼真的照片&#xff08;提示词汇总&#xff09; 前言1、逼真照片生成公式2、提示词速查表 总结 前言 今天分享一个系统的入门级Midjourney制图教程&#xff1a;涵盖了最基础的绘画概念及提示词&#xff0c;精选了一些重要的提示词&…...

【运维自动化-配置平台】如何跨业务转移主机

在如何创建业务拓扑中&#xff0c;了解到业务是蓝鲸体系重要的资源管理纬度&#xff0c;主机在业务之前需要流转怎么做呢&#xff1f;比如要把A业务一台主机划给B业务使用权限中心 跨业务转移主机一般场景是由源主机所在业务的负责人发起&#xff0c;需要申请目标业务的相关权…...

connection problem,giving up

参考&#xff1a; https://zhuanlan.zhihu.com/p/93438433 仅仅安装 sudo apt-get install xrdp 在用RDP远程的时候总是卡在登录界面&#xff0c;connection problem,giving up&#xff0c; some problem… 第一步&#xff1a; sudo apt-get install xserver-xorg-core sudo…...

终极指南:macOS百度网盘限速破解与SVIP解锁完整教程

终极指南&#xff1a;macOS百度网盘限速破解与SVIP解锁完整教程 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否厌倦了在macOS上使用百度网盘时那…...

深度解析 StoreClaw:面向电商全域的 “懂销售” 智能体技术架构与核心实现原理

摘要随着大语言模型、多智能体协同、实时数据分析与自动化决策技术的快速迭代&#xff0c;AI 正从辅助工具向业务执行主体演进。传统电商平台数字化工具多停留在数据统计、报表展示、基础客服层面&#xff0c;缺乏具备自主感知、自主分析、自主决策、自主执行的闭环能力&#x…...

CSerialPort 4.3.2 保姆级集成指南:5分钟让你的QT/MFC/Electron项目拥有稳定串口功能

CSerialPort 4.3.2 全栈集成实战&#xff1a;从QT到Electron的跨平台串口方案 在工业控制、物联网设备调试和嵌入式系统开发中&#xff0c;串口通信作为最基础也最可靠的数据传输方式之一&#xff0c;至今仍发挥着不可替代的作用。然而&#xff0c;不同操作系统提供的串口API差…...

三分钟永久备份QQ空间:让青春记忆永不褪色的终极方案

三分钟永久备份QQ空间&#xff1a;让青春记忆永不褪色的终极方案 【免费下载链接】QZoneExport QQ空间导出助手&#xff0c;用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件&#xff0c;便于迁移与保存 项目地址: https://…...

论文写到头秃?书匠策AI这套“毕业论文急救包“我劝你现在就存好!

同学们&#xff0c;我做论文写作科普这么久&#xff0c;后台私信最多的一句话就是&#xff1a;"老师&#xff0c;我论文一个字都没动&#xff0c;还有救吗&#xff1f;" 有。今天就给你们安利一个我最近实测了一圈、觉得确实有点东西的工具——书匠策AI&#xff08;…...

企业级应用如何通过Taotoken聚合API管理多个大模型调用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业级应用如何通过Taotoken聚合API管理多个大模型调用 在构建企业级AI应用时&#xff0c;一个常见的需求是同时接入多个不同厂商的…...

请感谢那个不眠的AI:当Agent在夜以继日地干活时,人类的角色正悄悄改变

AI再次攻克了一道数学难题。 就在这个月,OpenAI对外宣布:它的推理模型独立生成了一个原创数学证明,成功证伪了组合几何学中悬而未决近80年的核心猜想——由著名数学家保罗埃尔德什于1946年提出的平面单位距离问题。 消息一出,数学界和AI圈同时炸了锅。不是因为这道题有多…...

软考高级《信息系统项目管理师教程(第4版)》控制范围(监控过程组)知识结构+10道真题

《信息系统项目管理师教程(第4版)》控制范围(监控过程组)知识结构+10道真题 一、控制范围 核心知识结构(第4版官方标准版) 1. 过程核心定义(必考,监控过程组重点) 控制范围属于范围管理、监控过程组,是范围管理的第六个过程,衔接确认范围与项目收尾,与实施整体变…...

WTEW的操作记录

WTEW的操作记录WTEW事务代码的操作记录WTEW事务代码的操作记录 1、查询贸易合同信息 如果是自己创建可以使用WB21、WB22、WB23事务码&#xff0c;如果是税码更新用WBRP更新价格 2、创建后续单据&#xff0c;采购TC创建采购订单&#xff0c;销售TC创建销售订单&#xff0c;注…...

告别频繁中断!华大HC32F4A0串口DMA接收实战:用TIMEOUT中断替代STM32的IDLE

HC32F4A0串口DMA接收优化&#xff1a;TIMEOUT中断替代STM32 IDLE的工程实践 对于习惯了STM32开发环境的工程师而言&#xff0c;华大半导体的HC32F4A0系列微控制器在串口通信处理上存在一个显著差异——缺少IDLE中断机制。这一差异在RS485通信等需要帧完整性判断的场景中尤为突出…...