题目描述:
给定一个字符串 S
和一个字符 C
。返回一个代表字符串 S
中每个字符到字符串 S
中的字符 C
的最短距离的数组。
注意:
- 字符串
S
的长度范围为[1, 10000]
。 C
是一个单字符,且保证是字符串S
里的字符。S
和C
中的所有字母均为小写字母。
示例:
输入:S = "loveleetcode" C = "e";
输出:[3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
分析:可以采取两重for循环,外循环只遍历字符串S,内循环寻找 字符串中每个字符 到 字符串中字符C 的最短距离。将最短距离放入到每个字符所对应的数组中的位置。
代码如下(加注释):
public int[] shortestToChar(String S, char C) {
int[] arr = new int[S.length()]; //创建存放最短距离的数组arr
for(int i=0;i<S.length();i++){ //此循环只遍历字符串S中的每个字符
int count = 10001; //对于每次循环,最短距离count要初始化
for(int j=0;j<S.length();j++){ //次循环找出最短距离
if(C==S.charAt(j)){
count = Math.abs(j-i)<count?Math.abs(j-i):count;
}
}
arr[i] = count; //将最短距离放入数组
}
return arr;
}