[LeetCode] 821. Shortest Distance to a Character
阿新 • • 發佈:2019-02-03
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]
備註:
- S的長度範圍 [1, 10000]。
- C是單個字元,並且保證在S中存在。
- 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;
}
};