https://leetcode.com/problems/repeated-substring-pattern/
下面这个方法,开始我觉得挺好。可惜还是超时了。后来我就加了一个剪枝策略,只有长度能够整除总长度的子串,才需要进行比较。
package com.company; import java.util.*; class Solution { public boolean repeatedSubstringPattern(String str) { for (int i=1; i<=str.length()/2; i++) { if (str.length() % i != 0) { continue; } StringBuilder sb = new StringBuilder(); sb.append(str.substring(i)); sb.append(str.substring(0, i)); if (str.equals(sb.toString())) { return true; } } return false; } } public class Main { public static void main(String[] args) throws InterruptedException { System.out.println("Hello!"); Solution solution = new Solution(); // Your Codec object will be instantiated and called as such: String str = "abcabcabcc"; boolean ret = solution.repeatedSubstringPattern(str); System.out.printf("ret:%b\n", ret); System.out.println(); } }
下面是开始超时的方法,少了一个剪枝条件。
package com.company; import java.util.*; class Solution { public boolean repeatedSubstringPattern(String str) { for (int i=1; i<=str.length()/2; i++) { StringBuilder sb = new StringBuilder(); sb.append(str.substring(i)); sb.append(str.substring(0, i)); if (str.equals(sb.toString())) { return true; } } return false; } } public class Main { public static void main(String[] args) throws InterruptedException { System.out.println("Hello!"); Solution solution = new Solution(); // Your Codec object will be instantiated and called as such: String str = "abcabcabcc"; boolean ret = solution.repeatedSubstringPattern(str); System.out.printf("ret:%b\n", ret); System.out.println(); } }
时间: 2024-11-20 07:03:51