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 ,且 c 是 s 中出现过的字符。 返回一个整数数组 answer ,其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为 abs(i - j) ,…...
BI工具如何为金融行业带来变革?金融行业营销管理策略大揭秘
当今数字化时代,金融行业正经历着前所未有的变革。随着大数据、人工智能、区块链等新兴技术的兴起,金融机构正面临着重新定义服务模式、风险管理和客户体验的挑战。商业智能(BI)作为这一变革的关键驱动力,已经成为金融…...
操作系统 - 计算机系统概述
事前提一嘴 室友考完研了,下一年就是我了,真不想和他们一起考,压力太大了,这里分享一点笔记吧 采用王道考研的书以及视频,去掉了一些书上的废话,加上了视频中的重点,最后总结出来的 如有侵权&a…...
[论文笔记]REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
引言 今天带来一篇经典论文REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS的阅读笔记,论文中文意思是 在语言模型中协同推理和行动。 虽然大型语言模型(LLMs)在语言理解和互动决策任务中展现出强大的能力,但它们在推理(例如思维链提示)和…...
[]下标的意义
数组: int array[10]; array[0]获取的是值,还是引用? std::map<int,string> m_map; m_map[0]返回的是引用还是值,还是指针。 #include <iostream> #include <map> #include <vector> #include <al…...
去重复记录和排序——kettle开发09
一、去除重复记录 去除重复记录,就是将数据流中的数据进行字段比较,从而去掉重复值的过程。去除重复记录的前提是需要将数据流中的数据进行排序,然后再进行去重操作。 去除重复记录的逻辑是,如下图,我们将需要比较的…...
中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!
2024年5月14日,为进一步深化合作,促进业务共同发展,实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…...
基础—SQL—DML(数据操作语言)插入数据
一、介绍 分类全称说明DMLData Manipulation Language数据操作语言。用来对数据库表中的数据进行增删改(插入、删除、修改) 则增、删、改是三个操作也就对应着三个关键字,分别是: 添加数据:( INSERT )修改数据&#…...
【改變,是面對的開始】
改變,不是為了逃避無法解決的困境,而是為了面對心靈深處最懼怕的聲音。 她離開宛如人間天堂的義大利,轉往物質相對匱乏的印度,想藉由清修的方式,理清混亂的內在,重新與自己對話。 赫然發現,認…...
AI大模型实现德语口语练习
利用AI大模型实现德语口语练习的应用需要整合多种技术和资源,以确保学生能够获得全面、互动和有效的学习体验。以下是实现德语口语练习应用的详细流程和技术要点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 实现流程 …...
一文读懂npm i的命令以及作用
目录 1. 基本知识2. 常见用法 1. 基本知识 npm i 是 Node Package Manager (npm) 的一个命令,用于安装 Node.js 项目依赖的包 是 npm install 的简写形式,功能完全相同 详细解析 npm: npm 是 Node.js 的包管理工具,用于安装、共…...
You don‘t have enough free space或者no space left on device异常
1.磁盘空间不足 Linux安装软件显示 You dont have enough free space 或者docker拉镜像时,出现磁盘空间不足的情况 no space left on device 如果你是ubuntu系统。查看磁盘空间 df -h 多半是这个目录满了/dev/mapper/ubuntu--vg-ubuntu--lv 大多情况我们只希望扩…...
饮料添加剂新型褪色光照试验仪器太阳光模拟器
太阳光模拟器的定义和功能 太阳光模拟器是一种高科技设备,它可以模拟太阳光的光谱、光强和光照条件,用于实验室环境中对太阳能电池、光电器件以及其他需要太阳光条件的设备和材料进行评估。太阳光模拟器的主要功能包括模拟太阳光的光谱分布、辐照度、光…...
ElasticSearch - 删除已经设置的认证密码(7.x)
文章目录 Pre版本号 7.x操作步骤检查当前Elasticsearch安全配置停止Elasticsearch服务修改Elasticsearch配置文件删除密码重启Elasticsearch服务验证配置 小结 Pre Elasticsearch - Configuring security in Elasticsearch 开启用户名和密码访问 版本号 7.x ES7.x 操作步骤 …...
9.4 Go语言入门(运算符)
Go语言入门(运算符) 目录三、运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符7. 运算符优先级 目录 Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注…...
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(),它使用了装饰器 lru_cache()。…...
AWS安全性身份和合规性之Shield
shield:盾(牌);(保护机器和操作者的)护罩,防护屏,挡板;屏障;保护物;(警察的)盾形徽章;保护人;掩护物;盾形纹徽;盾形奖牌; AWS Shield是一项AWS托管的DDoS(Distributed Denial of Service,分布式…...
Midjourney入门篇 | 打造最逼真的照片(强烈推荐)
强烈推荐:如何用Midjourney打造最逼真的照片(提示词汇总) 前言1、逼真照片生成公式2、提示词速查表 总结 前言 今天分享一个系统的入门级Midjourney制图教程:涵盖了最基础的绘画概念及提示词,精选了一些重要的提示词&…...
【运维自动化-配置平台】如何跨业务转移主机
在如何创建业务拓扑中,了解到业务是蓝鲸体系重要的资源管理纬度,主机在业务之前需要流转怎么做呢?比如要把A业务一台主机划给B业务使用权限中心 跨业务转移主机一般场景是由源主机所在业务的负责人发起,需要申请目标业务的相关权…...
connection problem,giving up
参考: https://zhuanlan.zhihu.com/p/93438433 仅仅安装 sudo apt-get install xrdp 在用RDP远程的时候总是卡在登录界面,connection problem,giving up, some problem… 第一步: sudo apt-get install xserver-xorg-core sudo…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
