题目描述:
思路:
先从左向右遍历一遍,找到位置关系;
然后再从右向左遍历一遍,求出最小值
代码如下:
class Solution {
public:
vector<int> shortestToChar(string S, char C) {
vector<int>res(S.size(),S.size());
int pre=S.size();
for(int i=0;i<S.size();i++){
if(S[i]==C)
pre=i;
res[i]=min(abs(pre-i),res[i]);
}
pre=-1;
for(int i=S.size()-1;i>=0;i--){
if(S[i]==C)
pre=i;
res[i]=min(abs(pre-i),res[i]);
}
return res;
}
};