不同的循环子字符串Java
文章发布较早,内容可能过时,阅读注意甄别。
# 题目
给你一个字符串 text ,请你返回满足下述条件的 不同 非空子字符串的数目:
- 可以写成某个字符串与其自身相连接的形式(即,可以写为 a + a,其中 a 是某个字符串)。 例如,abcabc 就是 abc 和它自身连接形成的。
示例 1:
输入:text = "abcabcabc"
输出:3
解释:3 个子字符串分别为 "abcabc","bcabca" 和 "cabcab" 。
示例 2:
输入:text = "leetcodeleetcode"
输出:2
解释:2 个子字符串为 "ee" 和 "leetcodeleetcode" 。
提示:
- 1 <= text.length <= 2000
- text 只包含小写英文字母。
# 思路
for循环
# 解法
class Solution {
public int distinctEchoSubstrings(String text) {
Set<String> set = new HashSet<>();
final int N = text.length();
for (int i = 0; i < N; i++) {
for (int j = i + 1; j - i <= N - j; j++) {
String key = text.substring(i, j);
if (text.startsWith(key, j)) {
set.add(key);
}
}
}
return set.size();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 总结
- 分析出几种情况,然后分别对各个情况实现