我试图从给定的小写字母随机字符串中得到形成一个单词的次数。
示例假设我有一个字符串hfgajjvbynajgrty
,我想知道我的名字ayan
可以从中形成多少次。
我做了一点但是之后我无法想到这样做的逻辑。
$result = [];
$count = 0;
for($i=0; $i<$stringLength; $i++) {
$count = substr_count($string, $string[$i]);
$result[$string[$i]] = $count;
}
var_dump($result);
foreach($result as $s => $occurs) {
}
答案 0 :(得分:0)
这不是很容易,但也不难......
假设您想要生成单词aoData,.push(search_gen);
,并且您将获得字符串abc
。
首先要做的是创建一个数组A,它将包含你想要的单词中出现的字符数(显然是一个长度为26的数组)。
第二件事是创建另一个数组B,它将包含你给出的字符串中字符的发生次数(也是长度26)。
在这个例子中,数组是:
aaabbbbccc
然后运行以下循环:
A: 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B: 3 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
您的答案将存储使用B制作A的最大可能次数。
在示例中,答案为3(这是{3,4,3}之间的最小值,显然你会浪费一个int answer = 99999999;
for(i = 0; i < 26; i++){
if(A[i] != 0){
answer = min(answer, B[i]/A[i]);
}
}
)。
如果给定字符串为b
,则答案为2,这是{2,3,4}之间的最小值。