示例 1:解答:首先確定 指定字元 的個數。 如果只有乙個指定字元,直接遍歷求舉例即可。輸入: s = 「loveleetcode」, c = 『e』
輸出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
如果有多個指定字元,首先處理第乙個之前和最後乙個指定字元之後的距離,這裡的距離為下標相減。
之後處理 第乙個 和最後乙個之間的指定字元距離,這裡分兩次遍歷,第一次遍歷的距離為 元素與左側的指定字元的距離,第二次遍歷為 元素其右側指定字元的距離。二者取較小值即可。
**:
vector<
int>
shortesttochar
(string s,
char c)
//有多個指定字元的情況
//首先處理到第乙個字元
for(
int i =
0; i <= record[0]
; i++
) result[i]
=abs
( record[0]
- i)
;//處理最後乙個字元
for(
int i = record[ record.
size()
-1]; i < s.
size()
; i++
) result[i]
=abs
( record[ record.
size()
-1]- i)
;//對於其他情況
//從左側開始
int k =0;
for(
int i = record[0]
+1; i < record[ record.
size()
-1]; i++
)//從右側更新
k =1;
for(
int i = record[0]
+1; i < record[ record.
size()
-1]; i++
)return result;
}
執行結果:
leetcode 字元的最短距離
題目 給定乙個字串s和乙個字元c。返回乙個代表字串s中每個字元到字串s中的字元c的最短距離的陣列。示例 1 輸入 s loveleetcode c e 輸出 3,2,1,0,1,0,0,1,2,2,1,0 說明 字串s的長度範圍為 1,10000 c是乙個單字元,且保證是字串s裡的字元。s和c中的所...
1407 最短距離
兩個點 a b 均在做勻速直線運動。給出 t 0時刻 a b 的座標,以及 a b 的速度,計算t 0時兩個點的距離的最小值。輸入的第一行包含乙個整數 t 1 t 200 表示一共有 t 組測試資料。對於每組測試資料,第一行包含4個整數 x a y a v ax v ay 103 x a y a v...
編輯最短距離
給定兩個字串s和t,對於t我們允許三種操作 1 在任意位置新增任意字元 2 刪除存在的任意字元 3 修改任意字元 問最少操作多少次可以把字串t變成s?例如 s abcf t dbfg 那麼我們可以 1 把d改為a 2 刪掉g 3 加入c 所以答案是3。1 把t中字元全刪了,再新增s的全部字元,操作次...