821. Shortest Distance to a Character(python+cpp)

题目:

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 string S. All letters in S and C are lowercase.

解释:
给定一个字符串S,和一个字符C。求出S中每个字符到最近的字符C的距离。
这是找座位系列的经典题目,左右各遍历一遍即可。

python代码:

class Solution:
    def shortestToChar(self, S, C):
        """
        :type S: str
        :type C: str
        :rtype: List[int]
        """
        result=[]
        pre=float('-inf')
        for i ,val in enumerate(S):
            if val==C:
                pre=i
            result.append(i-pre)
        pre=float('inf')
        for  i in range(len(S)-1,-1,-1):
            if S[i]==C:
                pre=i
            result[i]=min(result[i],pre-i)
        return result

c++代码:

#include<limits.h>
class Solution {
public:
    vector<int> shortestToChar(string S, char C) {
        int pre=-20000;
        vector<int> result;
        for(int i=0;i<S.size();i++)
        {
            if(S[i]==C)
                pre=i;
            result.push_back(i-pre);
        }

        pre=20000;
        for (int i=S.size()-1;i>=0;i--)
        {
            if(S[i]==C)
                pre=i;
            result[i]=min(result[i],pre-i);
        }
        return result;
    }
};

总结:
注意c++要考虑数值范围问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值