1. 程式人生 > >字元的最短距離

字元的最短距離

給定一個字串 S 和一個字元 C。返回一個代表字串 S 中每個字元到字串 S 中的字元 C 的最短距離的陣列。

示例 1:

輸入: S = "loveleetcode", C = 'e'
輸出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

說明:

  1. 字串 S 的長度範圍為 [1, 10000]
  2. C 是一個單字元,且保證是字串 S 裡的字元。
  3. 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;
    }
}