题目

给你一个字符串 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 <= 10^4
s[i] 和 c 均为小写英文字母
题目数据保证 c 在 s 中至少出现一次
来源:力扣(LeetCode)

解题思路

  一个最简单的思路:遍历字符串s找到c在s中的所有位置,然后再遍历一次s,计算最短距离。

class Solution:def shortestToChar(self, s: str, c: str) -> List[int]:loaction=[]temp=[]for i in range(len(s)):if s[i]==c:loaction.append(i)for i in range(len(s)):temp.append(min([abs(i-j) for j in loaction]))return temp

LeetCode简单题之字符的最短距离相关推荐

  1. LeetCode简单题之删除字符使字符串变好

    题目 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 . 请你返回删除后的字符串.题目数据保证答案总 ...

  2. LeetCode简单题之两个相同字符之间的最长子字符串

    题目 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符.如果不存在这样的子字符串,返回 -1 . 子字符串 是字符串中的一个连续字符序列. 示例 1: 输 ...

  3. LeetCode简单题之连续字符

    题目 给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度. 请你返回字符串的能量. 示例 1: 输入:s = "leetcode" 输出:2 解释 ...

  4. LeetCode简单题之查找共用字符

    题目 给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回.你可以按 任意顺序 返回答案. 示例 1: 输入:words = ...

  5. LeetCode简单题之数组中的字符串匹配

    题目 给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词.请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词. 如果你可以删除 words[j] 最左侧和/或最 ...

  6. LeetCode简单题之1比特与2比特字符

    题目 有两种特殊字符: 第一种字符可以用一个比特 0 来表示 第二种字符可以用两个比特(10 或 11)来表示. 给定一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一位字符,则返回 ...

  7. LeetCode简单题之生成每种字符都是奇数个的字符串

    题目 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 . 返回的字符串必须只含小写英文字母.如果存在多个满足题目要求的字符串,则返回其中任意一个即可. ...

  8. LeetCode简单题之长度为三且各字符不同的子字符串

    题目 如果一个字符串不含有任何重复字符,我们称这个字符串为 好 字符串. 给你一个字符串 s ,请你返回 s 中长度为 3 的 好子字符串 的数量. 注意,如果相同的好子字符串出现多次,每一次都应该被 ...

  9. LeetCode简单题之检查是否所有字符出现次数相同

    题目 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false . 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串. ...

最新文章

  1. webpack源码阅读——npm脚本运行webpack与命令行输入webpack的区别
  2. lucene,基于QueryParser的搜索
  3. respberry pi3 上手随记
  4. inotify 机制
  5. XML--使用XML来将字符串分隔成行数据
  6. 输出螺旋数字正方形java_Java实现顺时针输出螺旋二维数组的方法示例
  7. 使用fastjson工具类json字符串和对象之间的转换
  8. 【JEECG技术博文】Jeecg高级查询器
  9. 作为前端,你需要了解的js构造函数和原型
  10. python json删除字段_如何使用python删除json对象?
  11. 致初级开发的一封信:坚持写代码!
  12. STM32 F4 General-purpose Timers for Periodic Interrupts
  13. php数据库随机选择,php – 在MySQL数据库中选择两个随机行
  14. 勇者游戏C语言,c语言命令行-勇者斗恶龙
  15. linux安装vmd软件步骤,科学网-VMD (linux下分子可视化软件)-刘雪静的博文
  16. Java课程中实际项目案例分析
  17. CDH大数据平台搭建
  18. PostgreSQL数据库统计信息——analyze命令
  19. 内容安全策略(content-security-policy)
  20. ubuntu18.04安装vmware虚拟机

热门文章

  1. 如何判断飞机的年限_技术流带你鉴定前风挡玻璃更换,不再使用日期判断!
  2. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
  3. vue实现文件上传功能
  4. 【Spring】框架简介
  5. 【软件工程】VB版机房文档总结
  6. sql移除数据中的换行符和回车符
  7. pytorch的backward
  8. 三段式LLVM编译器
  9. MLIR(Multi-Level Intermediate Representation Compiler)架构 Infrastructure
  10. 道路场景语义分割算法