leetcode:459. Repeated Substring Pattern

来源:互联网 发布:mill9%2e1编程教程 编辑:程序博客网 时间:2024/04/28 15:00

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: TrueExplanation: It's the substring "ab" twice.

Example 2:

Input: "aba"Output: False

Example 3:

Input: "abcabcabcabc"Output: TrueExplanation: It's the substring "abc" four times. (And the substring "abcabc" twice.)

解题思路:

本题需要判别字符串是否由某个子串重复生成而来,将字符串切分为能被该字符串整除的长度,然后暴力匹配,只要匹配到第一个符合条件的就返回true,若没有则返回false。

class Solution {public:    bool check(const string &s, int len, int k){        int TL = len/k;        for(int i = 1; i < TL; i++){            for(int j = 0; j < k; j++){                if(s[i * k + j] != s[j])return false;            }        }        return true;    }    bool repeatedSubstringPattern(string s) {        int len = s.length();        int flag = 0;        for(int k = 1; k <= len/2; k++){            if(len % k == 0){                if(check(s, len, k))return true;            }        }        return false;    }};




0 0
原创粉丝点击