LeetCode 821.字符的最短距离(python)
题目链接
题目描述:
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
【LeetCode 821.字符的最短距离(python)】示例 1:
输入: S = “loveleetcode”, C = ‘e’
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:
字符串 S 的长度范围为 [1, 10000]。
C 是一个单字符,且保证是字符串 S 里的字符。
S 和 C 中的所有字母均为小写字母。
解题思路:
先将字符串中C表示的字符的位置记录下来,然后计算字符串中每一个字符与所有字符C的距离,并求出最小距离即可。
p.s.别人的做法,用i表示当前字符,s[i:].find(c)表示右边的最近距离,s[i-len(s)::-1].find(c)表示左边的最近距离,取两者最小值,若当前字符左边或右边没有字符C,会返回-1,将-1设为一个较大的数即可。
class Solution:
def shortestToChar(self, S: str, C: str) -> List[int]:
loc=[]
dis=[]
for i in range(0,len(S)):
if S[i]==C:
loc.append(i)#记录e在列表中的位置
for i in range(0,len(S)):
t=[]
for j in loc:
t.append(abs(i-j))#计算每一个字符和所有C的距离
dis.append(min(t))#将最小距离添加到结果数组中
return dis
推荐阅读
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- 爬虫数据处理HTML转义字符
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- C语言的版本比较
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters