【LeetCode 459】关关的刷题日记42 – Repeated Substring Pattern
关关的刷题日记42 – Leetcode 459. Repeated Substring Pattern
题目
Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 10000.
Example 1: Input: "abab"
Output: True
Explanation: It's the substring "ab" twice. Example 2: Input: "aba"
Output: False Example 3: Input: "abcabcabcabc"
Output: True
Explanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)
题目的意思是给定一个字符串,来判断它是否可以由一个子串重复若干次构成。
思路
思路:遍历给定字符串s的前半部分,来找可能重复若干次构成s的子串。那怎么找这个可能的子串呢?遍历过程中得到的字符s[i]和s[0]相等的时候,再进一步判断s.substr(0,i-1)这个字符串是否是目标子串,判断之前还可以进一步优化,看下s.substr(0,i-1)的长度是否能被s.size()整除,不能整除的话也不用判断了。
class Solution {public:
bool repeatedSubstringPattern(string s) {
if(s.empty() || s.size()==1)
return false;
for(int i=1; i<=s.size()/2; ++i)
{
if(s[i]==s[0])
{
string temp=s.substr(0,i);
if(s.size()%i!=0)
continue;
int flag=1;
for(int j=i; j<s.size(); j=j+i)
{
if(s.substr(j,i)!=temp)
{
flag=0;
break;
}
}
if(flag)
return true;
else
{
flag=1;
}
}
}
return false;
}};
人生易老,唯有陪伴最长情,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring中AOP相关的API及源码解析,原来AOP是这样子的
- 状态管理之Vuex (一) 基操勿六
- 形式化分析工具(五)使用CAS +语法轻松编写HLPSL规范
- 你知道Spring是怎么将AOP应用到Bean的生命周期中的吗?
- 太实用了!自己动手写软件——密码验证器的界面实现
- 【TBase开源版测评】深度测评TBase的shard分片和冷热分离存储特性
- Python爬虫练手,一个简单的Python资讯采集案例
- 直播带货软件开发过程中,如何实现图片上传
- 太实用了!自己动手写软件——邮件用户名密码验证
- 太实用了!自己动手写软件——SSH、FTP和SQL server的密码破解
- Kaggle Tweet Sentiment Extraction 第七名复盘
- 【翻译】.NET 5中的性能改进
- 腾讯云实时语音识别-iOS SDK
- JointPoint用法及与ProceedingJoinPoint 的关系
- Spring中的异步请求、异步调用及demo测试