mfc 找到字符串中字符_[LeetCode] 467. 环绕字符串中唯一的子字符串

0366deb0541f5f820cb9f4ce05b5d66a.png

题目链接: https://leetcode-cn.com/problems/unique-substrings-in-wraparound-string

难度:中等

通过率:35.6%

题目描述:

把字符串 s 看作是"abcdefghijklmnopqrstuvwxyz"的无限环绕字符串,所以 s 看起来是这样的:"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".

现在我们有了另一个字符串 p 。你需要的是找出 s 中有多少个唯一的 p 的非空子串,尤其是当你的输入是字符串 p ,你需要输出字符串 sp 的不同的非空子串的数目。

注意: p 仅由小写的英文字母组成,p 的大小可能超过 10000。

示例:

示例 1:

**输入:** "a"
**输出:** 1
**解释:** 字符串 S 中只有一个"a"子字符。

示例 2:

**输入:** "cac"
**输出:** 2
**解释:** 字符串 S 中的字符串"cac"只有两个子串"a"、"c"。.

示例 3:

**输入:** "zab"
**输出:** 6
**解释:** 在字符串 S 中有六个子串"z"、"a"、"b"、"za"、"ab"、"zab"。.

思路:

我们只需找以每个字母结尾而形成最长连续的字符串长度就行了!

比如p = 'abcdabc',我们前面abcd部分发现以a结尾的最长连续字符串长度为1;以b结尾的最长连续字符串长度为2;以c结尾的最长连续字符串长度为3;以d结尾的最长连续字符串长度为4;而后面的abc重复前面的字符串。

而最长长度就是以字母结尾可以组成不同字符串的个数,如以d结尾的最长连续字符串长度为4,即d, cd, bcd, abcd,4个不同的字符串。

代码:

class Solution:def findSubstringInWraproundString(self, p: str) -> int:from collections import defaultdictdp = defaultdict(int)dp[p[0]], curMaxLen = 1, 1for idx in range(1, len(p)):if (ord(p[idx]) - ord(p[idx - 1])) % 26 == 1:curMaxLen += 1else:curMaxLen = 1dp[p[idx]] = max(dp[p[idx]], curMaxLen)return sum(dp.values())

换一种写法:

class Solution:def findSubstringInWraproundString(self, p: str) -> int:from collections import defaultdictif not p: return 0dp = defaultdict(int)dp[p[0]], curMaxLen = 1, 1for prev, nxt in zip(p, p[1:]):curMaxLen = curMaxLen + 1 if (ord(nxt) - ord(prev)) % 26 == 1 else 1dp[nxt] = max(dp[nxt], curMaxLen)return sum(dp.values())

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

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

相关文章

ntopng mysql_网络流量监控工具与分析Ntop和Ntopng

Ntop工具NtopNtop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观、详细。Ntop甚至可以列出每个节点计算机的网络带宽利用率。Ntop工作方式1. 命令行界面2. web界面Ntop的功能1. 可以自动从网络中获取有用的信息2. 可以将获取的数据…

oracle express介绍

Oracle express 不是一种新型火车也不是一种新型的邮递服务。Oracle express是个多维的数据库和应用程序环境,这个应用程序环境是用来构建OLAP应用程序的。Express的组件(或者OLAP选项)是维(多维部分中的一部分)和变量…

一文读懂背包问题

转自:刘毅https://www.61mon.com/index.php/archives/188/问题展开有 N 件物品和一个容量为 V 的背包。第 i 件物品的体积是 Ci,其价值是 Wi。求解,在不超过背包容量情况下,将哪些物品装入背包可使价值总和最大。基本思路这是最基…

python核心数据类型_Python核心数据类型——列表

列表列表是任意对象的有序集合。也就是说,其元素可以是任何类型的对象。有序指的是,有严格的从左到右的顺序,这一点不同于字典,可以通过偏移读取,支持在原处修改,长度可变,是可变的类型。1. 常…

java io操作_Java 的IO操作(文件的读,写操作)

/* * FileEditor.java * * Created on 2006年9月13日, 下午2:22 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ /** *这是第一个类,没有利用缓冲技术 */ package fileeditor; import java.io.*;…

小米造车是智能手机进入红海后的突围之举

日前,媒体报道小米已确定造车,并视其为战略级决策。此前,雷静曾多次考虑造车,但未下定决心,而是选择了投资蔚来和小鹏,而且并未占多少股权,小米在两家公司上市时的持股份额均不到 5%&#xff0c…

linux服务之NIS

NIS服务RHEL4系统中NIS服务器软件的名称是ypserv,该软件包没有被系统默认安装,需要手动安装系统中的ypbind软件包是NIS客户端需要使用的软件包,yp-tools软件包中提供了对NIS服务器的查询和管理工具软件,这两个包是RHEL4系统中默认…

群论的创立:两个少年天才的接力

我们生活的世界中,美丽的对称无处不在。不过喜欢认死理的数学家,则硬要用他们独特的语言来定义对称。在数学上,对称与群相关联。随着数论、代数方程和几何等研究方向的发展,“群论”这个无比重要的数学领域被开创建立。而这一伟大…

python oracle连接池_【Python + Oracle】Python Oracle连接池—改进版

Oracle 连接池第四版。编程语言Python语言版本3.5.3实现功能oracle 连接池,解决频繁连接oracle数据库带来的连接资源耗费问题程序托管GitHub-OraclePool修改日期2020年8月3日version 4.0 改进说明:**[2020-04-21]** 修复连接用完后,不放回连接…

为什么有些大公司的技术弱爆了?

阅读本文大概需要5分钟。最近好几个大厂的读者不约而同跟我聊到公司采用的技术栈很落后的问题,一个读者还感叹:是不是大厂的领导都是混子?技术这么弱还不如之前呆的小公司。回复了几个读者朋友之后,这里也想跟大家分享下这个问题&…

普通程序员转型深度学习指南

AI领域人才奇缺,炙手可热的AI专业应届生年薪30万起步,AI毕业生基本不用找工作,都已经被企业早早预定。AI人才究竟有多紧缺?据腾讯研究院《全球人工智能人才白皮书》报告数据,目前全球AI领域人才仅约30万,全…

sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...

pe、pe、pe这些是什么意思解说1,听小课堂电小二跟你讲PE是Protecting Earthing的缩写,简体中文名称称之为“保护导体”,也就是我们通常所说的“地线”,我国规定PE线为黄绿双色线 。1.PE线的应用PE线是专门用于将电气装置外露导电部…

java短信接口 调用_带你了解短信接口的调用

查看接口说明image.png注册账号注册成功的页面如下:image.png设置短信内容的签名比如:将短信签名设置为yzcimage.png查取短信接口密钥image.png设计Java程序短信发送客户端的代码如下:package day02;import org.apache.http.Header;import or…

抢鲜体验.NET6 Preview1,配上Docker简直停不下来!

新年复工后的第一件大事儿就是上周三重磅发布的.NET6 Preview1,发布了很多的新特性,让人欢欣鼓舞!然而有些小伙伴儿却担心学不过来了,其实不用担心的,照常用你的.NET5,等11月份.NET6 LTS正式发布了&#xf…

实用金属材料手册_机械密封选用手册

《机械密封选用手册》较系统地介绍了机械密封的原理、结构、材料及辅助系统装置及安装、使用方法和故障分析等。内容以产品样本图册为主,并做了相应的结构说明。本书重点介绍了机械密封的选用方法,读者可根据介质、温度、压力、转速等工况条件选取合适的…

为什么在人工智能火爆的现在,我们还在做数据分析

这些年来,随着进入大数据时代,各行各业均有一个词频频被提到,那就是数据分析。那么数据分析究竟是什么呢?数据分析就是指用适当的统计分析方法对收集来的大量数据进行处理分析,提取有用信息并形成结论,从而…

加入域--深入理解DNS在域中作用

接前面《创建windows域--深入理解域概念》这篇文章,来说说加入域的问题。 有人加入域时很顺利,几分钟甚至几秒的功夫,完毕。有人加入域时很恼火,折腾了一天甚至几天始终丈二和尚莫不找头脑。有个学生,很勤奋&#xff0…

学生成绩管理java代码_Java swing学生成绩管理系统

项目描述本系统主要分为5大功能模块,分别为:登录模块:实现用户登录。参数设置:包括学生年级设置、班级设置、考试科目设置以及考试类别设置。基本信息:包括学生信息、教师信息以及学生考试成绩信息管理。系统查询&…

你可能不知道的按位与、或运算技巧

背景最近在园子里看到了这篇文章,看完这篇会有意外收获:C#枚举高级战术https://mp.weixin.qq.com/s/yipaL6Acil-uxq_bDDgdyg想起了很久之前的自己的一篇总结,特地找出来说说概念在工作中遇到按位或组合权限串。一直不是特别明白。今天终于花了…

web高德地图怎么加载离线地图_怎么验证全国离线卫星地图缓存文件的完整性

1. 概述自从我们发布了《如何离线浏览全国7137GB海量谷歌卫星离线影像》一文后,很多用户都在问下载海量数据的具体方法,为了解决大家的困惑,于是又分别发布了《如何一次性下载全国谷歌卫星影像地图数据的方法》和《如何一次性下载谷歌地球的全…