2022-4-19 每日一题-leetcode
题目链接:https://leetcode-cn.com/problems/shortest-distance-to-a-character/
个人题解:
两次遍历就可以了。
先求 \(s[i]\) 到其左侧最近的字符 \(ch\) 的距离,再求 \(s[i]\) 到其右侧最近的字符 \(ch\) 的距离
两个取一个 \(min\)
代码:
class Solution {
public:
vector<int> shortestToChar(string s, char c) {
int n=s.size();
vector<int> res(n,INT_MAX);
for(int i=0,j=-1;i<n;i++)
{
if(s[i]==c) j=i;
if(j!=-1) res[i]=i-j;
}
for(int i=n-1,j=-1;i>=0;i--)
{
if(s[i]==c) j=i;
if(j!=-1) res[i]=min(res[i],j-i);
}
return res;
}
};