怎样找字符串里面的最好小周期?

匿名用户 2018-08-12 89 string
如: abcabcabc周期为3:abc aabbaadaabbaad周期为2:aabbaad badeifo周期为1:badeifo c#、c、c++、java、javascript、php实现均可以
其他回答
private static int findShortCycle(String str){
		String shortWord = "";
		for (int j = 0; j < str.length(); j++) {
			shortWord = str.substring(0,j+1);
			if(str.split(shortWord).length==0){
				return str.length()/shortWord.length();
			}
		}
		return 0;
	}
阿扁 2018-08-12 16:54:20 0条评论
O(n) 的解答. 这题至少是 O(n), 不能再快了, 因为至少要读到每一个字符..
<?php
function getrepeatedstring($string) {
    if (strlen($string)<2) return $string;
    for($i = 1; $i<strlen($string); $i++) {
        if (substr(str_repeat(substr($string, 0, $i),strlen($string)/$i+1), 0, strlen($string))==$string)
            return substr($string, 0, $i);
    }
    return $string;
}
?>

来自 algorithm - Finding shortest repeating cycle in word?
热心网民 2018-08-12 16:54:20 0条评论
相关问答