821. 字符的最短距离(字符串)
字符 字符串
2023-09-14 09:01:25 时间
Question
给你一个字符串 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 中至少出现一次
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shortest-distance-to-a-character
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Ideas
统计c的所有位置,计算s[i]距离c之间最近的位置 O(n^2)
Code
class Solution:
def shortestToChar(self, s: str, c: str) -> List[int]:
'''
找c的所有位置,计算s[i]到c的最短距离 O(N^2)
'''
dis = []
for k,v in enumerate(s):
if v == c:
dis.append(k)
res = []
for k,v in enumerate(s):
tem = float('inf')
for i in dis:
tem = min(tem,abs(k-i))
res.append(tem)
return res
相关文章
- 正则表达式:匹配不包含某些字符和不包含某些字符串的写法「建议收藏」
- 2022-11-26:给定一个字符串s,只含有0~9这些字符 你可以使用来自s中的数字,目的是拼出一个最大的回文数 使用数字的个数,不能超过s里含有的个数 比如
- 【测开技能】Java语言系列(七) 字符和字符串
- js设置字符编码utf8_字符串转换成html
- 2022-11-01:给定一个只由小写字母和数字字符组成的字符串str。 要求子串必须只含有一个小写字母,数字字符数量随意。 求这样的子串最大长度是多少?
- 【JavaScript——牛客网算法No.HJ2】计算一个字符串中含有某个字符的个数[通俗易懂]
- java字符串练习题3、字符串中字符是否相同判断
- 2023-04-11:给你下标从 0 开始、长度为 n 的字符串 pattern , 它包含两种字符,‘I‘ 表示 上升 ,‘D‘ 表示 下降 。 你需要构造一
- JavaScript验证字符串只能包含数字或者英文字符的代码实例详解编程语言
- 解锁Oracle:字符编码转换(oracle字符转码)
- java字符转义 字符串中的双引号详解编程语言
- MySQL 整型转字符串的技巧(mysql整型转字符)
- 新手如何快速学会Linux字符转数字(linux字符转数字)
- 串Oracle领先的字符串服务(oracle第一个字符)
- Linux字符驱动:从实例学习开发(linux字符驱动实例)
- 串Oracle中如何将字符串转换为数值(oracle中转化字符)
- Oracle实现双位字符串精准记录(oracle保留两位字符)
- Oracle中字符函数的实用性深入分析(oracle中的字符函数)
- Oracle函数CHR轻松输出非打印字符(oracle函数chr)
- Oracle数据库中字符串拼接技巧(oracle中字符拼接)
- asp将全角的字符转变成半角字符,将半角转变成全角d的代码
- sqlserver中根据字符分割字符串的最好的写法分享
- PHP将字符分解为多个字符串的方法