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

wordpress 单点登录网站搜索引擎优化的方法

wordpress 单点登录,网站搜索引擎优化的方法,什么是网络营销?网络营销与电商营销有什么区别?,做网站做那一网站好文章目录 写在前面Tag题目来源题目解题解题思路方法一:双指针方法二:动态规划 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解题
  • 解题思路
    • 方法一:双指针
    • 方法二:动态规划
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【双指针】【动态规划】【字符串】


题目来源

392. 判断子序列


题目解题

判断字符串 s 是不是字符串 t 的子序列,字符串的子序列指的是原字符串删除一些字符或者不删除字符但是不改变原来字符顺序而形成的新的字符串。


解题思路

方法一:双指针

我们使用两个指针 ij,初始化分别指向字符串 st 的初始位置。从前往后对 s[i]t[j] 进行匹配:

  • 如果 s[i] = t[j],则同时向右移动双指针;
  • 如果 s[i] != t[j],则只移动指向字符串字符的指针 j
  • 无论是否匹配,都需要移动 j 指针;
  • 最终,如果 i 移动到了字符串 s 的末尾,说明 st 的子序列。

实现代码

class Solution {
public:bool isSubsequence(string s, string t) {int i = 0, j = 0;int n = s.size(), m = t.size();while(i < n && j < m) {if(s[i] == t[j])++i;++j;}return i == n;}
};

复杂度分析

时间复杂度: O ( n + m ) O(n+m) O(n+m) n n ns 的长度, m m mt 的长度。无论匹配是否成功,都至少youyige有一个指针向右移动,两指针的移动总距离为 n + m n+m n+m

空间复杂度: O ( 1 ) O(1) O(1),仅仅使用了两个指针变量。

方法二:动态规划

方法一有可以进行优化的地方,在方法一中,我们需要枚举匹配 t 中的字符,如果 t 中不匹配的字符很长,我们会有大量的时间浪费在 t 中找下一个匹配的字符。

于是,我们可以先对字符串 t 进行预处理,记录从每个位置开始往后每一个字符第一次出现的位置。

状态

f[i][j] 表示字符串 t 中从位置 i 开始往后字符 j 第一次出现的位置。

状态转移

有如下的状态转移关系:

  • 如果 t[i] = j,那么 f[i][j] = i
  • 否则,f[i][j] = f[i+1][j]

根据以上转移关系,我们需要对字符串 t 从后往前进行动态规划。

base case

我们的边界状态为 f[m-1][...],我们置 f[m][...] = m,让 f[m-1][...] 正常转移,如果 f[i][j] = m,则表示从位置 i 开始往后不存在字符 j

我们通过 f 数组,可以快速定位到字符串 t 后面每一个第一次出现的字符(s 中的字符):

  • 如果 f[i][j] = m,则表示从字符串 t 位置 i 开始往后不存在 s 中的字符 j,则直接返回 false
  • 否则,更新 i,从新的位置开始定位 s 中的字符;
  • 如果一直没遇到 m,最后返回 true

方法二使用动态规划的方法对字符串 t 进行一次处理,可以大大提高匹配,也是 进阶 题目的一种解法。

实现代码

class Solution {
public:bool isSubsequence(string s, string t) {int n = s.size(), m = t.size();vector<vector<int>> f(m+1, vector<int>(26, 0));for (int i = 0; i < 26; ++i) {f[m][i] = m;}for (int i = m-1; i >= 0; --i) {for (int j = 0; j < 26; ++j) {if (t[i] == j + 'a') {f[i][j] = i;}else f[i][j] = f[i+1][j];}}int start = 0;for (int i = 0; i < n; ++i) {if (f[start][s[i] - 'a'] == m)return false;start = f[start][s[i] - 'a'] + 1;}return true;}
};  

复杂度分析

时间复杂度: O ( m × ∣ ∑ ∣ + n ) O(m \times \left| \sum \right| + n) O(m×+n) n n n 为字符串 s 的长度,m 为字符串 t 的长度, ∣ ∑ ∣ \left| \sum \right| 为字符集, ∣ ∑ ∣ = 26 \left| \sum \right| = 26 =26

空间复杂度: O ( m × ∣ ∑ ∣ ) O( m \times \left| \sum \right|) O(m×),使用的额外空间为对字符串 t 预处理所占用的空间。


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

http://www.yayakq.cn/news/871510/

相关文章:

  • 建设网站需要下载神呢软件吗做得比较好的公司网站
  • 网站开发软件开发如何看网站的浏览量
  • 网站开发的开发意义53建筑人才网
  • 百度怎么建设网站编程机构
  • 有哪些建设网站的怎么申请一个免费的网站
  • 游戏介绍网站模板下载地址wordpress app封装
  • 黑龙江建设教育信息网站首页开发和研发的区别
  • 建设网站与维护wordpress 修改数据库表
  • 网站建设工具哪个好wordpress如何添加导航
  • 网站icp备案做视频网站用什么好
  • 海口网站制作计划实用的wordpress插件
  • 公民道德建设网站南昌外包建站
  • 手机端的网站怎么做的信息网站设计方案
  • 深圳产品推广网站建设方案asp连接数据库做登录网站完整下载
  • 做衣服视频有些什么网站win7 iis 默认网站
  • 企业建网站有这个必要吗网站运营与建设
  • 金华网站建设方案优化网站建设技术架构
  • 易语言如何做网站太原市今天新闻
  • 微博网站开发新建设电影院 网站
  • 公司网站建设系统网页广告拦截怎么设置
  • 南京建设网站内容cdn资源访问出现问题怎么办
  • 网站分析seo情况公司网站设计收费
  • 源码开发网站建设中国电子商务网站建设
  • 南京机关建设网站大连网站推广
  • html怎么做查询网站吗企业网站备案时间
  • 网易云网站开发电子商务网站建设课外实训
  • 电子商务网站建设需求概述58同城网站建设目的
  • 做网站 教程水果网店网站建设策划书
  • 自学网站建设作业有哪个网站可以做ppt赚钱
  • 丰宁建设局网站wordpress 伪静态 分页