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;
    }
};

image

posted @ 2022-04-19 12:16  黑VS白-清墨  阅读(11)  评论(0)    收藏  举报