Leetcode Index

821.Shortest Distance to a Character

821.Shortest Distance to a Character

难度:Easy

给定一个字符串 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 中的所有字母均为小写字母。

代码如下:

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;
}
};