我需要一个PHP代码来查找字符串中最长的连续字符序列
我需要一个PHP代码来查找字符串中最长的连续字符序列。因此,如果我需要一个PHP代码来查找字符串中最长的连续字符序列,php,algorithm,Php,Algorithm,我需要一个PHP代码来查找字符串中最长的连续字符序列。因此,如果b组合在一起的次数最多,则程序应回显b和计数 示例字符串: aaabababbbbbaaaaabbbbbbbbaa 输出必须是: b 8 $string='aaabababbbaaabbbbbbbaa'; $occurrence=[]; $count=strlen($string); 对于($x=0;$x0) { $mostFrequentChar=$curChar=$string[0]; $maxFreq=$curFreq=1
b
组合在一起的次数最多,则程序应回显b
和计数
示例字符串:
aaabababbbbbaaaaabbbbbbbbaa
输出必须是:
b 8
$string='aaabababbbaaabbbbbbbaa';
$occurrence=[];
$count=strlen($string);
对于($x=0;$x<$count;$x++){
如果(isset($ocurrence[$string[$x]])){
$ocurrence[$string[$x]]++;
}否则{
$ocurrence[$string[$x]]=0;
}
}
var_转储(发生次数);
这应该能奏效 因为您正在寻找连续的序列:
$string = 'aaabababbbbbaaaaabbbbbbbbaa';
$count = strlen($string);
if ($count > 0)
{
$mostFrequentChar = $curChar = $string[0];
$maxFreq = $curFreq = 1;
for ($i = 1; $i < $count; $i++)
{
if ($string[$i] == $curChar)
{
$curFreq++;
if ($curFreq > $maxFreq)
{
$mostFrequentChar = $curChar;
$maxFreq = $curFreq;
}
}
else
{
$curChar = $string[$i];
$curFreq = 1;
}
}
}
echo $mostFrequentChar . ' ' . $maxFreq;
$string='aaabababbbaaabbbbbbbaa';
$count=strlen($string);
如果($count>0)
{
$mostFrequentChar=$curChar=$string[0];
$maxFreq=$curFreq=1;
对于($i=1;$i<$count;$i++)
{
if($string[$i]==$curChar)
{
$curFreq++;
如果($curFreq>$maxFreq)
{
$mostFrequentChar=$curChar;
$maxFreq=$curFreq;
}
}
其他的
{
$curChar=$string[$i];
$curFreq=1;
}
}
}
echo$mostFrequentChar。“”$maxFreq;
使用-
preg\u match\u all
获取重复字符序列,-
array\u map
以及strlen
以获取每个序列的字符串长度-
max
以获取数组中的最大值
考虑以下示例:
$string = "aaabababbbbbaaaaabbbbbbbbaa";
preg_match_all('#(\w)\1+#',$string,$matches);
print_r($matches);
将输出
Array
(
[0] => Array
(
[0] => aaa
[1] => bbbbb
[2] => aaaaa
[3] => bbbbbbbb
[4] => aa
)
[1] => Array
(
[0] => a
[1] => b
[2] => a
[3] => b
[4] => a
)
)
Array
(
[0] => 3
[1] => 5
[2] => 5
[3] => 8
[4] => 2
)
b
接下来,我们得到每个重复字符字符串的大小
$sizes = array_map('strlen', $matches[0]);
print_r($sizes);
将输出
Array
(
[0] => Array
(
[0] => aaa
[1] => bbbbb
[2] => aaaaa
[3] => bbbbbbbb
[4] => aa
)
[1] => Array
(
[0] => a
[1] => b
[2] => a
[3] => b
[4] => a
)
)
Array
(
[0] => 3
[1] => 5
[2] => 5
[3] => 8
[4] => 2
)
b
现在让我们获取$size
数组的最大值
print max($sizes);
会给我们
8
我们需要最大值的键来提取字母
$maxKey = array_keys($sizes, max($sizes));
print $matches[1][$maxKey[0]];
将输出
Array
(
[0] => Array
(
[0] => aaa
[1] => bbbbb
[2] => aaaaa
[3] => bbbbbbbb
[4] => aa
)
[1] => Array
(
[0] => a
[1] => b
[2] => a
[3] => b
[4] => a
)
)
Array
(
[0] => 3
[1] => 5
[2] => 5
[3] => 8
[4] => 2
)
b
我可以使用不同的字符串来执行此操作,其中包含“,”。通过使用爆炸函数。但我的实际问题是,它在aaabababbbbbaaabbbbbaaaaaaaa
中应该如何运行b'和a'重复8次。或者,如果您只想basort
生成的数组并获取最后一个元素。这不就是在字符串中生成最频繁的字符,而不考虑连续性吗?为什么要增加字符而不是出现计数器?虽然这个代码片段可以解决这个问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!这并不能回答所问的问题。虽然此代码片段可以解决问题,但确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!欢迎来到堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!代码也可以进行一些清理,例如修复缩进和删除额外的空行。