给定一个字符串 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
中的所有字母均为小写字母。
/**
* @param {string} S
* @param {character} C
* @return {number[]}
*/
var shortestToChar = function(S, C) {
};
个人解法
var shortestToChar = function(S, C) {
var result = [];
//['l','o','v','e','l','e','e','t','c','o','d','e']
S = S.split("");
S.forEach((element , index) => {
//如果元素是e,则result指定位置下元素为0
if(element === C){
result[index] = 0;
}else{
//不为e的话
if(S.lastIndexOf(C , index) === -1){
//如果e在右边
result[index] = S.indexOf(C , index) - index;
}else if(S.indexOf(C , index) === -1){
//如果e在左边
result[index] = index - S.lastIndexOf(C , index);
}else{
//左右都有e
if(S.indexOf(C , index) - index >= index - S.lastIndexOf(C , index)){
//左边的e离得比较近
result[index] = index - S.lastIndexOf(C , index);
}else{
//右边的e离得比较近
result[index] = S.indexOf(C , index) - index;
}
}
}
});
return result;
};