Given a stringS
and a characterC
, return an array of integers representing the shortest distance from the characterC
in the string.
Example 1:
Input:
S = "loveleetcode", C = 'e'
Output:
[3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
Note:
S
string length is in
[1, 10000].
C
is a single character, and guaranteed to be in string
S
.S
and
C
are lowercase.class Solution {
public int[] shortestToChar(String S, char C) {
int N = S.length();
int[] ans = new int[N];
int prev = -10000;
for (int i = 0; i < N; ++i) {
if (S.charAt(i) == C) prev = i;
ans[i] = i - prev;
}
prev = 10000;
for (int i = N-1; i >= 0; --i) {
if (S.charAt(i) == C) prev = i;
ans[i] = Math.min(ans[i], prev - i);
}
return ans;
}
}