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

网站建设广告模板中国seo第一人

网站建设广告模板,中国seo第一人,测试网站的方法,广州荔湾做网站公文章目录 一、题目二、C# 题解 一、题目 字符串轮转。给定两个字符串 s1 和 s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottle 是 erbottlewat 旋转后的字符串)。 点击此处跳转题目。 示例1: 输入:s1 “wa…

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  字符串轮转。给定两个字符串 s1s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottleerbottlewat 旋转后的字符串)。

  点击此处跳转题目。

示例1:

输入:s1 = “waterbottle”, s2 = “erbottlewat”
输出:True

示例2:

输入:s1 = “aa”, s2 = “aba”
输出:False

提示:

  • 字符串长度在[0, 100000]范围内。

说明:

  • 你能只调用一次检查子串的方法吗?

二、C# 题解

  可以将题目理解为从字符串内部切一刀换序重组,判断是否能变为原字符串。但按照该思路写复杂度为 O ( n 2 ) O(n^2) O(n2),不是很理想,因此还是从字符入手。

  使用双指针 i,j 从左向右分别指向 s1,s2i 的任务是遍历 s1,查找 s2s1 中的前缀;j 的任务是标识 s2 中前缀的位置,即 s2[0]~s2[j - 1]s2s1 相同的部分。

  以 s1:bunana, s2:nabuna 为例,可以看出,s1:buna | nas2:na | bunas1 的后缀和 s2 的前缀想同,均为 na,算法的具体流程如下:

b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ ⇓ b u n a n a ( s 1 ) i : ↑ n a b u n a ( s 2 ) j : ↑ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& \uparrow & & & & \\ & n & a & b & u & n & a & (s2)\\ j:& \uparrow & & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & \uparrow & & & \\ & n & a & b & u & n & a & (s2)\\ j:& \uparrow & & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & & \uparrow & & \\ & n & a & b & u & n & a & (s2)\\ j:& \uparrow & & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & & & \uparrow & \\ & n & a & b & u & n & a & (s2)\\ j:& & \uparrow & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & & & & \uparrow \\ & n & a & b & u & n & a & (s2)\\ j:& \uparrow & & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & & & & & \uparrow \\ & n & a & b & u & n & a & (s2)\\ j:& & \uparrow & & & \end{array}\\ ~\\\ \Downarrow\\ ~\\\ \begin{array}{l} & b & u & n & a & n & a & (s1)\\ i:& & & & & & & \uparrow \\ & n & a & b & u & n & a & (s2)\\ j:& & & \uparrow & & \end{array}\\ i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)    i:j:bnuanbaunnaa(s1)(s2)

  最终,i 指向 s1 的末尾,j 指向 s2 前缀的后一字符,即 s2 后缀的起始位置。

public class Solution {public bool IsFlipedString(string s1, string s2) {int l1 = s1.Length, l2 = s2.Length;if (l1 != l2) return false;  // 长度不相等直接否掉int i = 0, j = 0;            // 双指针,i 指 s1,j 指 s2while (i < l1) {             // 遍历 s1,寻找 s2 的前缀if (s1[i] == s2[j]) j++; // 如果字符相同,则 j 后移else {                   // 字符不同,则 i、j 回退i -= j;j = 0;}i++;                     // i 始终前进}i = 0;while (j < l2) {             // 检查 s2 后缀是否为 s1 前缀if (s1[i++] != s2[j++]) return false;}return true;}
}
  • 时间复杂度:一般情况下为 O ( n ) O(n) O(n),但波动较大。最坏情况为 O ( n 2 ) O(n^2) O(n2),即字符串包含大部分重复字符。可以使用 KMP 算法优化,懒了没必要。
  • 空间复杂度: O ( 1 ) O(1) O(1)
http://www.hrbkazy.com/news/52461.html

相关文章:

  • 用万网做网站淘宝seo是什么意思啊
  • 有没有做吉祥物的网站班级优化大师官网登录
  • 淘宝 网站建设教程视频教程百度关键词购买
  • 企业网站是否可以做淘宝客app代理推广合作50元
  • 南京网站推广哪家便宜青岛网站设计公司哪家好
  • 保定清苑城市建设网站国外搜索引擎大全
  • 广州seo网站推广费用b站引流推广
  • 太原市建设银行网站首页windows优化大师是什么软件
  • wordpress调用函数seo教程 百度网盘
  • 木蚂蚁网站正在建设中新业务在线软件下载
  • 租香港服务器做网站百度官方推广平台
  • 手机端网站开发流程图最新百度快速排名技术
  • 做一张网站图多少钱网销怎么销售的
  • html静态网页首页模板网站seo优化技巧
  • 网站域名 邮箱单页网站seo如何优化
  • 创意广告视频网站如何设计一个网页
  • 动态网站开发典型案例企业网站的网络营销功能
  • 杭州做网站 做小程序个人网站制作
  • 做淘宝美工图片网站软文营销什么意思
  • wordpress 绿色深圳网站优化公司哪家好
  • 企业网站自己可以做吗网络营销推广是做什么的
  • 简述电子商务网站的开发流程35个成功的市场营销策划案例
  • 惠州做企业网站的新手seo要学多久
  • 想在百度上做网站广东seo快速排名
  • 有代源码怎么做自己网站软件外包公司好不好
  • 做免费的视频网站可以赚钱吗宁波seo网站推广
  • pc 移动端网站建设深圳网站设计公司
  • 毕设做网站心得体验新网站推广最直接的方法
  • 网站seo收费长沙seo网站排名
  • 微企帮做网站52种新颖的促销方式