刷刷刷,代码敲起来嘻嘻---力扣字符串->459. 重复的子字符串
背景,通过2020年一年的日夜学习,自己技术方面大部分都有涉略,虽然暂时还不精通,特别是对以前不懂的多线程和数据库优化以及jvm和分布式部分大概进行了学习并敲了项目,以为金三银四的机会到了,自己要进大厂,唉,现实总是很骨感,投了简历,很多都要求算法,我前面是根本没刷过力扣(非科班,一起努力),感觉面试时共享屏幕被看着写,跟我被套了狗头的w或者虚弱一样,难受,本来就很难写了,被人盯的痒痒,面到算法基本都挂了,很受打击,自暴自弃了两天,不想学习了,也不想努力了,还去打了一晚上lol,后面想想,感觉确实是自己问题太大,平时业务增删改查,也没太难的业务,自己思维都慢慢钝化了,准备今年刷完easy,再刷一些中等难度的吧,面试应该会好些,一起加油啊。
有什么问题都可以一起讨论哈,都是新手嘻嘻
package letecode.string;
/**
* 459. 重复的子字符串
* 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
*/
public class RepeatableStr {
public static void main(String[] args) {
String str = "abaababaab";
Boolean result = isRepeatableStr(str);
System.out.println("result = " + result);
}
/**
* 思路就是从第一个字符串开始,找到和第一个字符串一样的,然后截取这段一样的,看是否能被整除,可以被整除,则将整除的次数算出来,将基础
* 字符增加整除的次数,看是否和原始字符串相等,如果不能整除就继续往后找和第一字符串一样的,再截取,继续这样判断,可能还有别的思路,我目前
* 还比较菜,只看了小灰算法这本书,看到了树,继续加油。
* @param str
* @return
*/
private static Boolean isRepeatableStr(String str) {
char[] chars = str.toCharArray();
char first = chars[0];
Boolean flag = false;
for (int i = 1; i < chars.length; i++) {
if (first == chars[i]){
String baseStr = str.substring(0,i);
if (str.length()%baseStr.length() == 0){
int forTimes = str.length()/baseStr.length();
String repeatStr ="";
for (int j = 0; j < forTimes; j++) {
repeatStr = repeatStr + baseStr;
}
if (repeatStr.equals(str)){
flag = true;
break;
}
}
}
}
return flag;
}
}
艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构