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 };
复制代码

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5009725.html,如需转载请自行联系原作者

相关文章
|
前端开发 JavaScript UED
|
JavaScript
JS中改变this指向的六种方法
JS中改变this指向的六种方法
|
缓存 JSON 前端开发
2023年最新前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,微信小程序,Webpack 汇总篇)-- 持续更新 7
2023年最新前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,微信小程序,Webpack 汇总篇)-- 持续更新
790 0
|
11月前
|
人工智能 运维 前端开发
基于阿里百炼的DeepSeek-R1满血版模型调用【零门槛保姆级2084小游戏开发实战】
本文介绍基于阿里百炼的DeepSeek-R1满血版模型调用,提供零门槛保姆级2048小游戏开发实战。文章分为三部分:定位与核心优势、实战部署操作指南、辅助实战开发。通过详细步骤和案例展示,帮助开发者高效利用DeepSeek-R1的强大推理能力,优化游戏逻辑与视觉效果,解决官网响应延迟问题,提升开发效率和用户体验。适合企业开发者、教育行业及多模态探索者使用。
90728 26
基于阿里百炼的DeepSeek-R1满血版模型调用【零门槛保姆级2084小游戏开发实战】
|
人工智能 物联网
PiSSA :将模型原始权重进行奇异值分解的一种新的微调方法
我们开始看4月的新论文了,这是来自北京大学人工智能研究所、北京大学智能科学与技术学院的研究人员发布的Principal Singular Values and Singular Vectors Adaptation(PiSSA)方法。
297 3
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
306 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
1270 4
|
Kubernetes 安全 Docker
微服务中的部署方法。
# 微服务 # 部署 # 去 # 开发运营
|
SQL 分布式计算 大数据
MaxCompute ODPS重装上阵:PIVOT/UNPIVOT
MaxCompute推出新语法 - PIVOT/UNPIVOT:通过PIVOT关键字基于聚合将一个或者多个指定值的行转换为列;通过UNPIVOT关键字可将一个或者多个列转换为行。以更简洁易用的方式满足行转列和列转行的需求,简化了查询语句,提高了广大大数据开发者的生产力。
1360 1
MaxCompute  ODPS重装上阵:PIVOT/UNPIVOT
|
Android开发
Android 实现布局的缩小和再放大动画(使用scale动画效果进行实现)
Android 实现布局的缩小和再放大动画(使用scale动画效果进行实现)
1214 0