题目描述:定义重复字符串是由两个相同的字符串首尾拼接而成。例如:“abcabc” 是一个长度为 6 的重复字符串,因为它由两个 “abc” 串拼接而成;"abcba"不是重复字,例如输入:ababc,输出4,因为abab为最长重复字符串 用java
时间: 2024-09-18 10:13:23 浏览: 72
LeetCode每日一题(1) 字符串最大公因子
题目要求你编写一个 Java 程序,判断给定字符串是否为重复字符串。如果字符串是由两个相同子串首尾相连形成的,则返回该子串的长度,如果没有这样的重复结构,则返回0或适当的信息表示这不是一个重复字符串。
下面是一个简单的 Java 方法来解决这个问题:
```java
public class Main {
public static int findLongestRepeat(String str) {
if (str == null || str.isEmpty()) {
return 0;
}
for (int len = 1; len <= str.length() / 2; len++) { // 从1到半长试找循环
String subStr = str.substring(0, len); // 获取子串
if (str.endsWith(subStr)) { // 判断是否以子串结尾
if (str.startsWith(subStr)) { // 再次检查是否以子串开头
return len * 2; // 如果符合条件,返回重复长度
}
}
}
return 0; // 没有找到重复,返回0
}
public static void main(String[] args) {
System.out.println(findLongestRepeat("ababc")); // 输出:4
}
}
```
这个方法首先检查字符串是否为空,然后遍历所有可能的重复子串长度,通过 `substring` 和 `startsWith` 方法来判断是否是重复的。如果是,就返回重复的长度(即子串长度的两倍)。如果遍历完整个范围都没有找到符合条件的重复子串,那么返回0。
阅读全文