• LeetCode: Palindrome Partitioning


    一次过

     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
  • 相关阅读:
    CentOS 7 修改时区
    flink与kafka结合
    Kafka 原理和实战
    kafka单机多节点部署
    使用yumdownloadonly下载RPM包及依赖包
    使用Onvif协议进行设备发现以及指定设备信息探测
    kafka相关脚本操作
    Python入门篇-基础语法
    Python入门篇-pyenv安装及应用
    zabbix Server 4.0监控Flume关键参数
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3029858.html
Copyright © 2020-2023  润新知