java简单算法(重复的子字符串)
问题
- 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。
解决
class Solution {
public boolean repeatedSubstringPattern(String s) {
int n=s.length();
for(int i=1;i*2<=n;++i){ //如果i满足条件,则i必定小于等于数组长度的一半
if(n%i==0){ //如果s数组长度是i的整数倍
boolean chack=true;
for(int j=i;j<n;++j){
if(s.charAt(j)!=s.charAt(j-i)){ //若第j(i)个字符与第j-i个字符不相同
chack=false;
break;
}
}
if(chack){
return true;
}
}
}
return false;
}
}
// 需要比较数组可以看作若干个相同数组组成
// 前i个字符可以作为前缀
// 从第n-i个字符开始往后数i个字符也应该符合
总结
- 解法2
class Solution {
public boolean repeatedSubstringPattern(String s) {
return (s + s).indexOf(s, 1) != s.length();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程