zoukankan      html  css  js  c++  java
  • 重复的子字符串

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。

    示例 1:

    输入: "abab"

    输出: True

    解释: 可由子字符串 "ab" 重复两次构成。
    示例 2:

    输入: "aba"

    输出: False
    示例 3:

    输入: "abcabcabcabc"

    输出: True

    解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)

    public class RepeatedSubString {
        public boolean repeatedSubStringPattern(String s){
            String str =s + s ;
            return str.substring(1,2*s.length()-1).contains(s);
        }
    
        public boolean repeatedSubStringPattern2(String s){
            for (int i = 1; i < s.length(); i++){
                if(s.length() % i == 0){
                    String t = s.substring(0,i);
                    boolean flag = true;
                    for(int j= i; j+i <= s.length();j+=i) {
                        if (!t.equals(s.substring(j, j + i))) {
                            flag = false;
                            break;
                        }
                    }
                    if(flag){
                        return  true;
                    }
    
                }
            }
            return false;
        }
    
        public boolean repeatedSubStringPattern3(String s){
            for(int i=1; i<s.length(); i++){
                String str= rotate(s.toCharArray(),i);
                if(s.equals(str)){
                    return true;
                }
            }
            return false;
        }
        public String rotate(char[] nums, int k){
            k = k % nums.length;
            reverse(nums,0,nums.length-1);
            reverse(nums,0,k-1);
            reverse(nums,k,nums.length-1);
            return String.valueOf(nums);
        }
        public void reverse(char[] nums ,int begin, int end){
            int i= begin, j=end;
            while(i<j){
                char temp = nums[i];
                nums[i++] = nums[j];
                nums[j--] = temp;
            }
        }
        public static void main(String [] args){
            String s= "abcdabcdabcdabcd";
            RepeatedSubString b =new RepeatedSubString();
           boolean bb= b.repeatedSubStringPattern2(s);
            System.out.print(bb);
        }
    }
  • 相关阅读:
    memcache概念浅谈及名称混乱之区分
    apache设置头
    Apache中关于页面缓存的设置
    memcahced&redis命令行cmd下的操作
    memcache命令行
    Memcached管理与监控
    memcache stats命令详解
    memcache基础知识-stats参数
    ab测试
    yum安装Apache,Mysql,PHP
  • 原文地址:https://www.cnblogs.com/goodtest2018/p/13562786.html
Copyright © 2011-2022 走看看