20. Shortest Distance to a Character
Given a string s and a character c that occurs in s, return an array of integers answer where answer.length == s.length and answer[i] is the shortest distance from s[i] to the character c in s.
Example 1:
Input: s = "loveleetcode", c = "e"
Output: [3,2,1,0,1,0,0,1,2,2,1,0]Example 2:
Input: s = "aaab", c = "b"
Output: [3,2,1,0]Solution: ( Min Array )
Taking Distance from left side Taking Distance from right side
class Solution
{
public:
vector<int> shortestToChar(string s, char c)
{
int n = s.length();
vector<int> res(n);
int pos = INT_MAX;
for (int i = 0; i < n; i++)
{
pos = (s[i] == c) ? i : pos;
res[i] = (pos == INT_MAX) ? INT_MAX : i - pos;
}
pos = INT_MAX;
for (int i = n - 1; i >= 0; i--)
{
pos = (s[i] == c) ? i : pos;
res[i] = min(res[i], (pos == INT_MAX) ? INT_MAX : pos - i);
}
return res;
}
};Time Complexity: O(n)
Last updated
Was this helpful?