LeetCode简单题之字符的最短距离
題目
給你一個字符串 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简单题之字符的最短距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之最长回文串
- 下一篇: LeetCode简单题之最长特殊序列 Ⅰ