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"));
    	}
    }
    
  • 相关阅读:
    typora的使用
    kibana解决Kibana server is not ready yet问题
    docker详细
    docker 启动报错:Docker.Core.Backend.BackendException: Error response from daemon: open \.pipedocker_e
    win10的docker配置nginx
    lombok常用注解
    关于前端项目cookie的获取
    使用apt安装docker
    linux下root用户和普通用户切换
    deepin系统安装与linux磁盘分区
  • 原文地址:https://www.cnblogs.com/denggelin/p/12004163.html
Copyright © 2011-2022 走看看