一次過
1 class Solution { 2 public : 3 bool check( string s) { 4 for ( int i = 0 ; i < s.size(); i++ ) { 5 if (s[i] != s[s.size()- 1 -i]) return false ; 6 } 7 return true ; 8 } 9 void dfs(vector<vector< string >> &ret, vector< string > &retin, string s, int beg, int size) { 10 if (beg == size) ret.push_back(retin); 11 for ( int i = 1 ; i <= size-beg; i++ ) { 12 if (check(s.substr(beg, i))) { 13 retin.push_back(s.substr(beg, i)); 14 dfs(ret, retin, s, beg+ i, size); 15 retin.pop_back(); 16 } 17 } 18 } 19 vector<vector< string >> partition( string s) { 20 // Start typing your C/C++ solution below 21 // DO NOT write int main() function 22 vector<vector< string >> ret; 23 vector< string > retin; 24 dfs(ret, retin, s, 0 , s.size()); 25 return ret; 26 } 27 };
?C#

1 public class Solution { 2 public List<List< string >> Partition( string s) { 3 List<List< string >> ans = new List<List< string >> (); 4 List< string > tmp = new List< string > (); 5 dfs( ref ans, ref tmp, s, 0 , s.Length); 6 return ans; 7 } 8 public void dfs( ref List<List< string >> ans, ref List< string > tmp, string s, int beg, int size) { 9 if (beg == size) { 10 List< string > local = new List< string > (tmp.ToArray()); 11 ans.Add(local); 12 } 13 for ( int i = 1 ; i <= size - beg; i++ ) { 14 if (check(s.Substring(beg, i))) { 15 tmp.Add(s.Substring(beg, i)); 16 dfs( ref ans, ref tmp, s, beg+ i, size); 17 tmp.RemoveAt(tmp.Count- 1 ); 18 } 19 } 20 } 21 public bool check( string s) { 22 for ( int i = 0 ; i < s.Length; i++ ) { 23 if (s[i] != s[s.Length- 1 -i]) return false ; 24 } 25 return true ; 26 } 27 }
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
