给定一个字符串S和一个字符C。返回一个代表字符串S中每个字符到字符串S中的字符C的最短距离的数组。
示例 1:输入:S="loveleetcode",C='e',输出:[3,2,1,0,1,0,0,1,2,2,1,0]
解题思路:首先把与C字符相等的字符下标保存到list里面,在遍历整个字符串,遇到与C相等的赋值0,不相等的计算最小距离。
java实现:
class Solution {
public int[] shortestToChar(String S, char C) {
int len=S.length();
List<Integer> list=new LinkedList<>();
for(int i=0;i<len;i++){
if(C==S.charAt(i))list.add(i);
}
int[] result=new int[len];
for(int i=0;i<len;i++){
int min=10000;
if(C==S.charAt(i)){
result[i]=0;
}else{
for(int digit:list){
int t=Math.abs(digit-i);
if(min>t)min=t;
}
result[i]=min;
}
}
return result;
}
}