每日刷題 字元的最短距離

2021-09-10 04:53:23 字數 1261 閱讀 7772

示例 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的全部字元,操作次...