题目:
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++要考虑数值范围问题。