1、题目描述
2、分析
最简单的方案,对每一个字符,向两边寻找。
3、代码
1 vector<int> shortestToChar(string S, char C) { 2 3 vector<int> ans; 4 for(size_t i = 0; i < S.size();i++) 5 { 6 if(S[i] == C) 7 ans.push_back(0); 8 else 9 { 10 int j = i-1; 11 while( j >= 0 && S[j] != C) j--; 12 int k = i+1; 13 while( k <= S.size()-1 && S[k] != C) k++; 14 if( S[j] == C && S[k] == C) 15 { 16 ans.push_back( min(i-j,k-i) ); 17 }else if( S[j] == C && S[k] != C ) 18 { 19 ans.push_back( i-j); 20 }else{ 21 ans.push_back( k-i); 22 } 23 24 25 } 26 } 27 return ans; 28 29 }