1.題目描述數組
給定一個字符串 S
和一個字符 C
。返回一個表明字符串 S
中每一個字符到字符串 S
中的字符 C
的最短距離的數組。spa
示例 1:code
輸入: S = "loveleetcode", C = 'e' 輸出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
說明:blog
S
的長度範圍爲 [1, 10000]
。C
是一個單字符,且保證是字符串 S
裏的字符。S
和 C
中的全部字母均爲小寫字母。2.解決方法leetcode
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; } } };