【算法】程序猿不写代码是不对的68

来源:互联网 发布:sql insert into 多表 编辑:程序博客网 时间:2024/05/29 19:22
package com.kingdz.algorithm.time201706;/** * <pre> * 最小重复周期 * 一个字符串可以由某个长度为k的字符串重复多次得到,则代表该字符串以k为周期 * 如字符串abcabcabcabc的周期可以是3,也可以是6或12 * 求一个字符串的最小周期 * </pre> *  * @author kingdz *  */public class Algo08 {    public static void main(String[] args) {        String input = "abcabcabcabc";        // 先假设最小周期是1        int min = 1;        // 只要小于字符串长度就进行处理        while (min < input.length()) {            // 由于最小字符串重复,所以字符串的长度一定是子串的整数倍            if (input.length() % min != 0) {                min++;                continue;            }            // 得到子串            String subStr = input.substring(0, min);            int start = 0;            int end = min;            // 用子串和输入字符串进行比较            while (end != input.length()) {                if (!subStr.equals(input.substring(start, end))) {                    min++;                    break;                } else {                    start = end;                    end = start + min;                }            }            if (end == input.length()) {                break;            }        }        System.out.println(min);    }}

原创粉丝点击