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

力扣刷题--821. 字符的最短距离【简单】

题目描述🍗

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

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

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

示例 1:

输入:s = “loveleetcode”, c = “e”
输出:[3,2,1,0,1,0,0,1,2,2,1,0]
解释:字符 ‘e’ 出现在下标 3、5、6 和 11 处(下标从 0 开始计数)。
距下标 0 最近的 ‘e’ 出现在下标 3 ,所以距离为 abs(0 - 3) = 3 。
距下标 1 最近的 ‘e’ 出现在下标 3 ,所以距离为 abs(1 - 3) = 2 。
对于下标 4 ,出现在下标 3 和下标 5 处的 ‘e’ 都离它最近,但距离是一样的 abs(4 - 3) == abs(4 - 5) = 1 。
距下标 8 最近的 ‘e’ 出现在下标 6 ,所以距离为 abs(8 - 6) = 2 。
示例 2:

输入:s = “aaab”, c = “b”
输出:[3,2,1,0]

提示:
1 <= s.length <= 104
s[i] 和 c 均为小写英文字母
题目数据保证 c 在 s 中至少出现一次

完整代码 🍗

class Solution {
public:int Min(vector<int>v,int x){for(int i=0;i<v.size();i++){v[i]=abs(v[i]-x);  }auto min=min_element(v.begin(),v.end());  return *min;  }vector<int> shortestToChar(string s, char c) {  vector<int>ans;  for(int i=0;i<s.size();i++)  {if(s[i]==c)  {ans.push_back(i);  }}vector<int>v;  for(int i=0;i<s.size();i++)  {v.push_back(Min(ans,i));  }return v;  }
};

本篇完!🍗


http://www.mrgr.cn/news/19389.html

相关文章:

  • 2024 第七届“巅峰极客”网络安全技能挑战赛初赛 Web方向 题解WirteUp
  • Cortex-M --- 中断向量表
  • [嵌入式] 设备没有联网的情况下如何安装库
  • 怎么摆脱非自然链接?
  • 河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题
  • EE trade:为什么黄金没有100%的纯度
  • UE5 C++ 读取图片插件(一)
  • 怎么打黑神话悟空里的隐藏BOSS金池长老,黑风山关键关卡之一
  • ansible+awx搭建
  • 吐血整理(最全论文指令手册),还有 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】
  • vue3项目 / 三子棋
  • VMware 虚拟化平台部分问题和优化措施汇总
  • 软件测试工具——Junit单元测试
  • 【JavaScript】标准库:Array对象
  • 构建现代前端应用的利器:深入解析Webpack与Vite的差异与优势
  • 出现 /www/server/mysql/bin/mysqld: Shutdown complete 的解决方法
  • 【hot100篇-python刷题记录】【跳跃游戏 II】
  • 后端微服务架构下的服务数据隔离:Schema与Tenant
  • 坑——fastjson将字符串转到带枚举的java对象
  • 微小目标检测