字元的最短距離
給定一個字串 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 int[] shortestToChar(String S, char C) {
char[] str = S.toCharArray();
int[] shortest = new int[S.length()];
List<Integer> shortIs = new ArrayList<Integer>();
for(int i = 0;i < S.length();i++){
if(C == str[i])
shortIs.add(i);
}
for(int j=0;j < S.length();j++){
shortest[j] = shortLength(shortIs,j);
}
return shortest;
}
public int shortLength(List<Integer> A,int i){
int temp = 0;
int min = Math.abs(A.get(0)-i);
for(int a:A){
temp = Math.abs(a-i);
if(temp < min){
min = temp;
}
}
return min;
}
}