题目描述:

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

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

注意: 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”。

思路:
如例3,当字符串为'z'时,子串只有'z',个数为1;当字符串为'za'时,字串有'z','a','za',个数为3,和字符串'z'相比,新增子串个数为2;
字符串'zab',新增子串有'b','ab','zab'3个。
也就是说按序的字符串每增加一个,新增的字串个数加1。
建一个数组,存储每次新增的子串个数,最后统计数组中数字的和。
题目链接https://leetcode-cn.com/problems/unique-substrings-in-wraparound-string/
class Solution {
public:
int findSubstringInWraproundString(string p) {
int maps[];
int m[];
int len,num = ;
memset(maps,,sizeof(maps));
for(int i = ;i<p.size();i++)
{
if(i == )
{
len = ;
maps[p[i]-'a'] = ;
}
else
{
if(p[i-] == p[i]- || (p[i] == 'a' && p[i-] == 'z') ) //如果连续,则新增子串数加1
{
len++;
}
else
{
len = ;
}
if(len > maps[p[i]-'a']) //存储子串个数
{
maps[p[i]-'a'] = len;
}
}
} for(int i = ;i<;i++)
{
num = num + maps[i];
}
return num;
}
};
												

leetcode 467. 环绕字符串中唯一的子字符串的更多相关文章

  1. Java实现 LeetCode 467 环绕字符串中唯一的子字符串

    467. 环绕字符串中唯一的子字符串 把字符串 s 看作是"abcdefghijklmnopqrstuvwxyz"的无限环绕字符串,所以 s 看起来是这样的:"-zabc ...

  2. [Swift]LeetCode467. 环绕字符串中唯一的子字符串 | Unique Substrings in Wraparound String

    Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...

  3. Q467 环绕字符串中唯一的子字符串

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

  4. python判断字符串中是否包含子字符串

    python判断字符串中是否包含子字符串 s = '1234问沃尔沃434' if s.find('沃尔沃') != -1:     print('存在') else:     print('不存在' ...

  5. [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串

    Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...

  6. 467 Unique Substrings in Wraparound String 封装字符串中的独特子字符串

    详见:https://leetcode.com/problems/unique-substrings-in-wraparound-string/description/ C++: class Solu ...

  7. js 判断字符串中是否包含某个字符串的方法实例

    String对象的方法 方法一: indexOf()   (推荐) var str = "123"; console.log(str.indexOf("3") ...

  8. js 判断字符串中是否包含某个字符串

    String对象的方法 方法一: indexOf()   (推荐) var str = "123"; console.log(str.indexOf("3") ...

  9. js 判断字符串中是否包含某个字符串(转载)

    from : https://www.cnblogs.com/ooo0/p/7741651.html String对象的方法 方法一: indexOf()   (推荐) var str = " ...

随机推荐

  1. 使用vue脚手架搭建项目并将px自动转化为rem

    一.安装node.js环境 二.node.js安装完成后使用npm安装vue脚手架vue-cli和安装webpack,我这里用cnpm cnpm i @vue/cli -g //全局安装脚手架3.0 ...

  2. 【填坑】Ubuntu安装vsftpd

    1.安装vsftpdsudo apt-get install vsftpd 安装完毕后或许会自动生成一个帐户"ftp",/home下也会增加一个文件夹.如果没有生成这个用户的话可以 ...

  3. Core Animation笔记(- Layer 基本属性)

    一.Layer的基本属性 1. contents 图层内容默认为nil 可以指定一张图片作为内容展示 self.layerView.layer.contents = (__bridge id)imag ...

  4. go语言 goquery爬虫

      goquery 类似ruby的gem nokogiri goquery的选择器功能很强大,很好用.地址:https://github.com/PuerkitoBio/goquery 这是一个糗百首 ...

  5. Scrum会议博客以及测试报告

    3组Alpha冲刺阶段博客目录 一.Scrum Meeting1. 第六周会议记录(链接地址:https://www.cnblogs.com/Cherrison-Time/articles/11788 ...

  6. ISCC之RE_REV02

    打开IDA,跟着主函数转了一圈,无果,但是在下面翻到一串base64 base64解码,发现被坑了 this_is_not_the_flag_you_seek_keep_looking 继续翻,发现这 ...

  7. 采用MySQL-MMM做DB高可用时,遇到的一个小坑

    一.服务器分布   二.MySQL-MMM 配置 (1).公共配置[所有DB节点:Master1.Master2.Slave1.Slave2   Monitor节点] # vim /etc/mysql ...

  8. 右键tomcat找不到项目:There are no resources that can be added or removed from the server.

    右键Add and Remove找不到项目,会出现下面这个弹框: 之后在项目文件夹上右键(Java Build Path中引用的jdk的版本也需要和下面这个Project Facets中配置的java ...

  9. LabelEncoder save 离线使用

    For me the easiest way was exporting LabelEncoder as .pkl file for each column. You have to export t ...

  10. 《The One!团队》第八次作业:ALPHA冲刺(一)

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第一天 ...