zoukankan      html  css  js  c++  java
  • [LeetCode] Palindrome Partitioning II

    This link has two nice solutions, one updating from forth to back (posted by tqlong in the post) and the other updating from back to forth (posted by diego2 in the answer). The reversed updating one, if written in C++ as follows, achieves 12ms, 4ms faster than that of tqlong.

     1 class Solution {
     2 public:
     3     int minCut(string s) {
     4         int n = s.length();
     5         vector<int> cut(n + 1);
     6         iota(cut.rbegin(), cut.rend(), -1);
     7         for (int i = n - 1; i >= 0; i--) {
     8             for (int l = i, r = i; l >= 0 && r < n && s[l] == s[r]; l--, r++)
     9                 cut[l] = min(cut[l], cut[r + 1] + 1);
    10             for (int l = i, r = i + 1; l >= 0 && r < n && s[l] == s[r]; l--, r++)
    11                 cut[l] = min(cut[l], cut[r + 1] + 1);
    12         }
    13         return cut[0];
    14     }
    15 };

    Well, someone even achieves 4ms running time in C++, which makes me feel like to give a try. I use int* instead of vector<int> and change string s to const char* ss using s.c_str(). Now the code takes only 4ms, though looks not so nice :-)

     1 class Solution {
     2 public:
     3     int minCut(string s) {
     4         int n = s.length(), *cut = new int[n + 1];
     5         for (int i = 0; i < n; i++) cut[i] = i - 1;
     6         cut[n] = -1;
     7         const char *ss = s.c_str();
     8         for (int i = n - 1; i >= 0; i--) {
     9             for (int l = i, r = i; l >= 0 && r < n && ss[l] == ss[r]; l--, r++)
    10                 cut[l] = min(cut[l], cut[r + 1] + 1);
    11             for (int l = i, r = i + 1; l >= 0 && r < n && ss[l] == ss[r]; l--, r++)
    12                 cut[l] = min(cut[l], cut[r + 1] + 1);
    13         }
    14         return cut[0];
    15     }
    16 };
  • 相关阅读:
    ASP.NET和PHP全面对比
    GridView事件DataBinding,DataBound,RowCreated,RowDataBound区别及执行顺序分析
    OA、CRM、ERP之间的区别和联系是什么?
    C#继承
    对软件项目管理的几点认识
    冒泡
    经典排序算法
    asp.net遍历页面中所有TextBox,并赋值为String.Empty的方法
    String.Format用法
    frame和iframe
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4755575.html
Copyright © 2011-2022 走看看