Given a string S
and a character C
, return an array of integers representing the shortest distance from the character C
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 stringS
.- All letters in
S
andC
are lowercase.
class Solution {
public:
vector<int> shortestToChar(string S, char C) {
vector<int> ret;
for (int i = 0; i < S.size(); i++) {
int l = i, r = i;
bool lFund = false, rFund = false;
while (l >= 0) {
if (S[l] == C) {
lFund = true;
break;
} else {
l--;
}
}
while (r < S.size()) {
if (S[r] == C) {
rFund = true;
break;
} else {
r++;
}
}
if (lFund && rFund) {
ret.push_back(min(i - l, r - i));
} else if (lFund) {
ret.push_back(i - l);
} else {
ret.push_back(r - i);
}
}
return ret;
}
};