1.题目描述
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
示例 1:
输入: S = "loveleetcode", C = 'e' 输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:
- 字符串
S的长度范围为[1, 10000]。 C是一个单字符,且保证是字符串S里的字符。S和C中的所有字母均为小写字母。
2.解决方法
class Solution { public: vector<int> shortestToChar(string S, char C) { vector<int> res; vector<int> con; int l=0; int k=0; int Size=S.size(); int cs=0; for(int i=0;i<S.size();i++) { int tem=S.find(C,i); if(tem!=-1) {con.push_back(tem); i=tem; } } cs=con.size(); while(1) { if(k<=con[l]&&l==0) { res.push_back(con[l]-k); k++; } else if(k<=con[l]&&l>=1) { int m=min(con[l]-k,k-con[l-1]); res.push_back(m); k++; } else if(k>con[l]&&l==cs-1) { res.push_back(k-con[l]); k++; } else { l++; } if(k==Size) return res; } } };