LeetCode: Palindrome Partitioning

系统 1535 0

一次过

      
         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
        
         }
      
View Code

 

LeetCode: Palindrome Partitioning


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论