ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

力扣467(java)-环绕字符串中唯一的子字符串(中等)

2022-05-20 15:32:22  阅读:145  来源: 互联网

标签:子串 字符 java 结尾 示例 467 连续 字符串


题目:

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

"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...." . 
现在给定另一个字符串 p 。返回 s 中 唯一 的 p 的 非空子串 的数量 。 

 示例 1:

输入: p = "a"
输出: 1
解释: 字符串 s 中只有一个"a"子字符。
示例 2:

输入: p = "cac"
输出: 2
解释: 字符串 s 中的字符串“cac”只有两个子串“a”、“c”。.
示例 3:

输入: p = "zab"
输出: 6
解释: 在字符串 s 中有六个子串“z”、“a”、“b”、“za”、“ab”、“zab”。
 

提示:

1 <= p.length <= 105
p 由小写英文字母构成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-substrings-in-wraparound-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

举个例子:

假设p=‘dzafbcexya’

  • 以 d 结尾的连续子串有 d;
  • 以 z 结尾的连续子串有 z;
  • 以 a 结尾的连续子串有 a,za;
  • 以 f 结尾的连续子串有 f;
  • 以 b 结尾的连续子串有 b;
  • 以 c 结尾的连续子串有 c, bc;
  • 以 e 结尾的连续子串有 e;
  • 以 x 结尾的连续子串有 x;
  • 以 y 结尾的连续子串有 y, xy;
  •  最后一个a,由于题目要求子串唯一,所以最后一个a不算。

所以一共有 1+1+2+1+1+2+1+1+2 = 12个子串 。

根据规律,以当前字符结尾的连续子串的长度 == 以该字符结尾的相等子串的个数,故只需求出已知字符串中每个字符结尾的最长连续子串的长度,再相加即可。

 代码:

标签:子串,字符,java,结尾,示例,467,连续,字符串
来源: https://www.cnblogs.com/lmy569/p/16292420.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有