zoukankan      html  css  js  c++  java
  • LintCode: Longest Common Substring

    C++

    暴力搜索

    两个游标一个长度

    i遍历a

    j遍历b

    len遍历公共子串长度

     1 class Solution {
     2 public:    
     3     /**
     4      * @param A, B: Two string.
     5      * @return: the length of the longest common substring.
     6      */
     7     int longestCommonSubstring(string &A, string &B) {
     8         // write your code here
     9         int m = A.size();
    10         int n = B.size();
    11         if (m == 0 || n == 0) {
    12             return 0;
    13         }
    14         int ans = 0;
    15         for (int i = 0; i < m; ++i) {
    16             for (int j = 0; j < n; ++j) {
    17                 int len = 0;
    18                 while (i + len < m && j + len < n && A[i + len] == B[j + len]) {
    19                     len ++;
    20                     ans = max(ans, len);
    21                 }
    22             }
    23         }
    24         return ans;
    25     }
    26 };

    C++,

    dp

     1 class Solution {
     2 public:    
     3     /**
     4      * @param A, B: Two string.
     5      * @return: the length of the longest common substring.
     6      */
     7     int longestCommonSubstring(string &A, string &B) {
     8         // write your code here
     9         int m = A.size();
    10         int n = B.size();
    11         if (m == 0 || n == 0) {
    12             return 0;
    13         }
    14         vector<vector <int> > dp(m + 1, vector<int>(n + 1));
    15         // int[][] dp = new int[m + 1][n + 1];
    16         int ans = 0;
    17         for (int i = 0; i <= m; ++i) {
    18             for (int j = 0; j <= n; ++j) {
    19                 if (i == 0 || j == 0) {
    20                     dp[i][j] = 0;
    21                 } else {
    22                     if (A[i-1] == B[j-1]) {
    23                         dp[i][j] = dp[i - 1][j - 1] + 1;
    24                         ans = max(dp[i][j], ans);
    25                     } else {
    26                         dp[i][j] = 0;
    27                     }
    28                 }
    29             }
    30         }
    31         return ans;
    32     }
    33 };
  • 相关阅读:
    通过anaconda进行python多版本控制
    搭建java环境
    windows安装 Microsoft Visual c++
    更改jupyter notebook的主题颜色(theme) 包括pycharm
    linux服务器安装anaconda,然后远程使用jupyter
    根据经纬度坐标计算距离-python
    Redis相关链接
    VBA笔记-参考教程
    用sklearn计算卡方检验P值
    linux创建新用户
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/5009725.html
Copyright © 2011-2022 走看看