1. 程式人生 > >[LeetCode] 821. Shortest Distance to a Character

[LeetCode] 821. Shortest Distance to a Character

821. Shortest Distance to a Character (到字元的最短距離)

1. 題目翻譯

給定一個字串S,和一個字元C。求出S中每個字元到最近的字元C的距離。

例子:

輸入: S = "loveleetcode", C = 'e'
輸出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

備註:

  1. S的長度範圍 [1, 10000]。
  2. C是單個字元,並且保證在S中存在。
  3. S與C中的所有字元都是小寫字母。

2. 解題方法

首先建立一個數組flag將S中所有C存在的位置儲存下來。然後遍歷S字串,將其與C中儲存的位置依次求距離(差的絕對值),然後儲存下來最短距離就可以。

3. 程式碼

//Runtime: 15ms
class Solution {
public:
    vector<int> shortestToChar(string S, char C) {
        vector<int> res(S.size(),0);
        vector<int> flag;
        for(int i=0;i<S.size();i++)
            if(S[i]==C)
                flag.push_back(i);

        for(int i =0
;i<S.size();i++){ if(S[i]!=C){ int mind = S.size(); for(int j = 0;j<flag.size();j++) mind = mind<abs(flag[j]-i)?mind:abs(flag[j]-i); res[i]=mind; } } return res; } };