给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
输入: S = "loveleetcode", C = 'e'
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:
class Solution {
public:
vector<int> shortestToChar(string S, char C) {
vector<int> cc;
int len=S.size();
vector<int> index;
for(auto i:S)
if(i==C) {cc.push_back(0);
index.push_back(cc.size()-1);}
else cc.push_back(len);
int start=1;
for(int i=index[0]+1;i<len;i++)
if(cc[i]) cc[i]=start++;
else start=1;
start=1;
for(int i=index[index.size()-1]-1;i>=0;i--)
if(cc[i]) cc[i]=min(cc[i],start++);
else start=1;
return cc;
}
};