zoukankan      html  css  js  c++  java
  • LeetCode_459. Repeated Substring Pattern

    459. Repeated Substring Pattern

    Easy

    Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 10000.

    Example 1:

    Input: "abab"
    Output: True
    Explanation: It's the substring "ab" twice.
    

    Example 2:

    Input: "aba"
    Output: False
    

    Example 3:

    Input: "abcabcabcabc"
    Output: True
    Explanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)
    package leetcode.easy;
    
    public class RepeatedSubstringPattern {
    	public boolean repeatedSubstringPattern(String s) {
    		// corner case
    		if (s == null || s.length() == 0) {
    			return true;
    		}
    		int n = s.length();
    		for (int len = n / 2; len >= 1; len--) {
    			if (n % len != 0) {
    				continue; // s length must can be divided by the pattern length
    			} else {
    				String pattern = s.substring(0, len); // pattern string
    				int i = len; // start index of 2nd pattern
    				int j = i + len - 1; // end index of 2nd pattern
    				while (j < n) {
    					String substr = s.substring(i, j + 1);
    					if (!pattern.equals(substr)) {
    						break; // failed for this pattern, try next pattern
    					} else {
    						i += len;
    						j += len;
    					}
    				}
    				// if it past the last substring check, i will be n
    				if (i == n) {
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    
    	@org.junit.Test
    	public void test() {
    		System.out.println(repeatedSubstringPattern("abab"));
    		System.out.println(repeatedSubstringPattern("aba"));
    		System.out.println(repeatedSubstringPattern("abcabcabcabc"));
    	}
    }
    
  • 相关阅读:
    我说
    时间管理
    职场自我管理
    html元素不可见的三种方式
    windows查看端口占用情况
    windows下vbs脚本隐藏控制台
    找钥匙问题
    CSS中的偏僻知识点
    竖式谜题
    node库的选择
  • 原文地址:https://www.cnblogs.com/denggelin/p/12004163.html
Copyright © 2011-2022 走看看