当前位置: 首页 > news >正文

网站建设实训计划书百度关键词排名靠前

网站建设实训计划书,百度关键词排名靠前,网站百度流量怎么做,专门做美剧的网站文章目录 14. 最长公共前缀解题思路:模拟5. 最长回文子串解题思路一:动态规划解题思路二:中心扩散法 14. 最长公共前缀 14. 最长公共前缀 ​ 编写一个函数来查找字符串数组中的最长公共前缀。 ​ 如果不存在公共前缀,返回空字符…

文章目录

  • 14. 最长公共前缀
  • 解题思路:模拟
  • 5. 最长回文子串
  • 解题思路一:动态规划
  • 解题思路二:中心扩散法

在这里插入图片描述

14. 最长公共前缀

14. 最长公共前缀

​ 编写一个函数来查找字符串数组中的最长公共前缀。

​ 如果不存在公共前缀,返回空字符串 ""

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

解题思路:模拟

​ 这道题模拟的思路有两种,第一种就是每次比较每个字符串同一位置的字符,判断是否相等,如果不相等则返回前面匹配的位置,可以使用 substr() 函数直接实现这块!

​ 另一种思路就是两两字符串进行比较,得到一个最长公共前缀之后,将其与第三个字符串比较,以此类推直到比较了所有字符串之后,得到的结果就是最长的公共前缀了!

​ 两种思路的时间复杂度都是 O(n*m),其中 n 表示的是字符串的个数,m 表示字符串平均字符个数,下面代码我们采用的是第一种思路!

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {// 每次比较每个字符串同一位置的字符for(int i = 0; i < strs[0].size(); ++i){char tmp = strs[0][i];for(int j = 1; j < strs.size(); ++j){// 如果某个字符串越界了,或者字符不相等,则直接返回前面匹配的位置if((i == strs[j].size()) || (strs[j][i] != tmp))return strs[0].substr(0, i);}}return strs[0];}
};

5. 最长回文子串

5. 最长回文子串

​ 给你一个字符串 s,找到 s 中最长的回文子串。

​ 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

解题思路一:动态规划

​ 这道题的动态规划解法之前在学动态规划的时候就已经讲过了,这里就不再赘述了,具体可以参考之前的笔记!

class Solution {
public:string longestPalindrome(string s) {// 定义dp二维数组,dp[j][i]表示从[j, i]区间是否为回文字符串bool dp[1000][1000] = { 0 };int maxlen = 0, maxindex = 0;for(int i = 0; i < s.size(); ++i){for(int j = 0; j <= i; ++j){// 状态转移方程if(s[i] == s[j]){if(i == j || j + 1 == i)dp[j][i] = true;elsedp[j][i] = dp[j + 1][i - 1];if(dp[j][i] && i - j + 1 > maxlen) // 是回文字符串并且长度更长了再更新{maxlen = i - j + 1;maxindex = j;}}}}return s.substr(maxindex, maxlen);}
};

解题思路二:中心扩散法

​ 之前我们在动态规划笔记中提到,字符串的常见题解方法还有一个中心扩散法(至于一个马拉车算法就不讲了,学习成本高,使用率太低),它其实借助的就是回文字符串的特性,由中心自发的向外扩散寻找回文字符串,直到不符合要求!

​ 假设此时我们遍历到字符串的 i 位置,然后定义两个指针 leftright 指向该位置,两指针从该位置分别向左和向右出发,每次走一格,判断 s[left] 是否等于 s[right],是的话说明此时就是 [left, right] 区间就是一个回文字符串,则判断是否需要更新最大长度以及回文字符串的起始位置,一直重复上述动作直到判断不符合或者越界了为止!

​ 但是上面操作有个问题,就是只考虑到了区间是奇数的情况,如果是偶数情况比如字符串 "abbc" 的话,此时 "bb" 这种情况就被忽略了,所以我们 需要判断偶数个字符的情况

class Solution {
public:string longestPalindrome(string s) {int n = s.size();int maxlen = 0, maxindex = 0;for(int i = 0; i < n; ++i){// 判断奇数情况int left = i, right = i;while(left >= 0 && right < n && s[left] == s[right]){left--;right++;}if(right - left - 1 > maxlen){maxlen = right - left - 1;maxindex = left + 1;}// 判断偶数情况(就起始位置不一样,剩下的操作逻辑都是一样的)left = i, right = i + 1;while(left >= 0 && right < n && s[left] == s[right]){left--;right++;}if(right - left - 1 > maxlen){maxlen = right - left - 1;maxindex = left + 1;}}return s.substr(maxindex, maxlen);}
};

在这里插入图片描述

http://www.hkea.cn/news/931684/

相关文章:

  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问
  • ppt做书模板下载网站有哪些内容国际婚恋网站排名
  • 上海网站建设内容更新网络营销策划目的
  • 重庆市建设信息网站关键词查询网
  • 做哪种网站流量大怎么打广告宣传自己的产品
  • 免费表白网站制作seo网络优化推广
  • 网站建设中可能升级中国科技新闻网
  • 网站制作内容文案网站如何快速被百度收录
  • 淘宝淘宝网页版登录入口免费seo公司
  • 竹溪县县建设局网站短视频营销
  • 好的网站有哪些搜索引擎seo是什么意思
  • 做音乐网站赚钱吗做小程序的公司
  • 坪地网站建设域名流量查询工具
  • 网站建设部署万能推广app
  • 网站的重要性怎么做个网站
  • 做网站的经验百度旗下有哪些app
  • 化工网站开发推广点击器
  • 怎么访问日本竹中建设网站外贸seo推广
  • 惠阳建设局网站引流推广接单
  • 北京通州网站建设公司如何建立公司网站网页
  • 网站换程序301seo优化按天扣费
  • html5 网站自适应长尾关键词挖掘爱站工具
  • 网站设计公司(信科网络)潍坊网站定制模板建站