代码随想录第九天

news2024/9/28 11:21:11

专题:字符串

题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。

比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

题目解析: 我们可以采用,0到i 个翻转,然后 i到n 翻转,再实现,0到n的翻转。这样就实现了,字符串前i个元素的左旋转。

代码实现: 

还可以采用方法,就是 新创建一个字符串,然后将旧字符串的前0到i个字符,放到新字符串的后面,把就字符串的i到n个字符串,放到新字符串的前面。

代码实现:

 题目二实现strstr()

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。

示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2

示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1

题目解析:利用字符串就能得到 这个字符串的前缀表next数组,然后再进行文本 和 字符串 匹配 的过程中,一旦发现字符串元素和文本的元素不匹配,此时在next数组里面查找,字符串此时应该回退到那个位置,而不像暴力法一样,要重头开始匹配。KMP更节省时间。

KMP的解析:    

只需要字符串就可以拿到这个字符串对应的前缀表,即next数组。前缀表里面保存的就是,当前位置前面所有元素的相同前后缀最大长度数。像上面的next:010120.表示的就是,在第一个元素时,此时字符串的最长相等前后缀数就是0,在第二个位置时,此时字符串的最长相等前后缀就是1.在第三个位置时,此时字符串的最长相等前后缀就是0.在第四个位置时,此时字符串的最长相等前后缀就是1.在第五个位置时,此时字符串的最长相等前后缀就是2.在第六个位置时,此时字符串的最长相等前后缀就是0.

 此时就已经拿到了这个字符串的前缀表,即next数组。

然后进行字符串和 文本的匹配过程,一旦不匹配的时候,就去查这个字符串的前缀表,即next数组,看此时应该回退到字符串的那个位置。

 题目三:重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

示例 1:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成

 题目解析:也使用到了KMP算法。其实也不难吧。原理清楚也不难。

使用移动匹配法,它是一种解决问题很好的算法。find()的底层实现,算法时间复杂度(m+n)

算法思想简单,如果这个字符串是由小字符串构造出来的,那么2个原来的大字符串拼接在一起,让s1小字符串的后半部分 和 s2小字符串的前半部分,重新组成一个新的小字符串。然后在新的字符串里面查找,查到的话就说明它是。

 

 使用KMP算法:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解56:CVBS输入-DSP和ADV7180的MDMA用法(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS IN视频输出 代码实现功能 电视视频是奇场合偶场交替传输的,所以通过 CVBSIN 模块采集到的图像如上实验所看到的,是…

CentOS 7.6 安装与配置 MySql 5.7.40

1 通过wget下载MySql的rpm # wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm2 检查是否存在MySql的repo # cd /etc/yum.repos.d/ # ls CentOS-Base.repo CentOS-Epel.repo可以看到没有MySql的repo 3 安装MySql的repo,并查看是否安…

React 生命周期

React 生命周期 这篇文章,我们来聊一聊在React中的生命周期。首先我们明确一点,在React中,函数式组件是没有生命周期的。谈到生命周期,都是关于类组件的! 生命周期官方网址 React.Component – React (docschina.or…

macOS Monterey 12.6.2 (21G320) Boot ISO 原版可引导镜像

macOS Monterey 12.6,皆为安全更新,不再赘述。 macOS Monterey 12.6,发布于 2022 年 9 月 12 日(北京时间今日凌晨),本次为安全更新。 今日(2022-07-21)凌晨,Apple 终于…

CentOS 8:SSH远程登录

SSH远程登录 SSH远程登录,也是 C / S 模式 服务端:sshd ,默认是启动的 systemctl status sshd systemctl start sshd SecureCRT 是打开了一个远程终端 注意:在终端环境里,不可以启动GUI程序 例如,在 …

【单片机】DS1302时钟/蜂鸣器

目录 一、DS1302时钟 1、DS1302时钟的介绍 2、DS1302时钟寄存器 3、DS1302时序图 4、BCD码 5、写一个时钟 6、写一个可调时钟 二、蜂鸣器 1、蜂鸣器的介绍​编辑 2、三极管放大驱动蜂鸣器 2.1NPN三极管工作原理(基极电流和发射电流均流向集电区&#xff…

Python图像识别实战(二):实现批量图像读取和像素转换(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用,分为分类问题(预测值是离散型)和回归问题(预测值是连续型)(具体见之前的文章)。 从本期开始,我将做一个关于图像识别的…

Dubbo 3 Dubbo 快速入门 3.2 Dubbo 快速入门 3.2.3 服务消费者

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 3 Dubbo 快速入门 文章目录Dubbo3 Dubbo 快速入门3.2 Dubbo 快速入门3.2.3 服务消费者3.2 Dubbo 快速入门 3.2.3 服务消费者 OK,之前我们 已经完成了 服务提供 者的改造 现在来改造 服务…

智能电网中采用博弈论的方法(Python代码实现)

目录 1 概述 2 系统模型 2.1 单价模型 2.2 效用模型和 能源消费者(EC) 的目标 2.3 成本模型和 中央电站(CPS) 的目标 2.4 优化问题 3 优化的能源管理模型 4 模型的特性 4.1 均衡的存在 4.2 决策过程 5 算法 6 数值的…

vector详解(不定长数组)

目录 什么是vector vector的介绍 模板的声明方式 vector的基本操作 push_back insert erase 遍历vector 小明爱数列-练习题 思路 什么是vector vector的介绍 和我一样,我猜你们看到题目时心里都会产生一个疑问"什么是vector?(大佬除外)".vector其实是…

一起Talk Android吧(第四百四十四回:UI控件之DatePicker)

文章目录概念介绍使用方法内容总结各位看官们大家好,上一回中咱们说的例子是"UI控件之NumberPicker",这一回中说的例子是"UI控件之DatePicker"。闲话休提,言归正转,让我们一起Talk Android吧! 概念介绍 看官…

CSS实现文字扫光特效

上大学的玩 ae 的时候,就曾遇到过这个特效。偶然在百度看到了类似特效,没想到竟然能用 css 实现,所以就研究了一下,文字扫光效果如下: 实现思路: 光效移动效果,可以通过 background-image 设置…

RCNN网络源码解读(Ⅲ) --- finetune训练过程

目录 0.回顾 1.finetune二分类代码解释(finetune.py) 1.1 load_data(定义获取数据的方法) 1.2 CustomFineTuneDataset类 1.3 custom_batch_sampler类( custom_batch_sampler.py) 1.4 训练train_mod…

JVM.......未完待续

一、了解 JVM JVM ( Java Virtual Machine ),又称之为 Java虚拟机。JVM 的运行与操作系统无关,能够实现跨平台,只要是安装了JVM的机器,都能运行Java程序,Java语言最重要的特点 "跨平台运行",也…

关于应用形态数轴方法的一点展望

“既然目前物理化学关于物质世界的最高理论成果,即所谓由量子力学和统计力学组成的第一原理,只能求算物质无生命的性质,而药物设计关心的却是有生命的性质.那么是否第一原理对药物设计就无所作为呢?不是的.也就是说,尽…

设备资产管理系统有什么用?

在PC时代,电脑、打印设备的那个已经成为当代企业的必备资产,生产型企业还有生产设备等资产,企业规模越大资产就越多,就越难管理,因此设备资产管理系统成为诸多企业数字化管理的重要组成之一。设备管理系统的应用不仅能…

算法基础篇-10-动态规划

1. 简介 动态规划是一种算法思想; 动态规划递归式子问题 1.1 案例1: 斐波那契数列 斐波那契数列:FnFn-1Fn-2 代码演示: 使用递归和非递归的方法来求解斐波那契数列的第n项; 递归的方法: public static…

uniapp实战仿写网易云音乐(二)—视频页面(scroll-view组件实现横线滑动,mescroll-uni实现视频列表,向下滑动刷新当前页面)

文章目录前言顶部导航条的实现视频列表的展示部分CSS部分最后前言 接着上篇文章继续完成剩下的部分,本篇文章是完成第二个页面——视频页面的部分,视频还是没有做播放的效果,主要是做展示效果。下面附上两篇文章链接,没看过的同学…

【概率论】正态分布

前导知识: 概率密度函数(密度函数):描述一个随机变量的在某个确定的取值点附近的可能性的函数。 随机变量的取值落在某个区域内的概率为概率密度函数在这个区域上的积分。 性质: f(x)>0 数学期望 又称均值&am…

vue组件

9.Vue组件 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树: 9…