パラメータとして2つの文字列を受け取るPHP関数$str1
と$str2
を書きました。2つの文字列が互いに共有する一意の文字の数を数えます。
ここでは、2つの文字列が共有する一意の文字の数を数えたいと思います。例えばだから:s,t,r,i,n,g
:この例では
$str1 = "stringstring1";
$str2 = "stringstring2";
彼らは6人のユニークなキャラクターを、共有しています。
<?php
function compare($str1, $str2){
$cmp = 0;
for($i = 0; $i < strlen($str1); $i++){
for($j = 0; $j < strlen($str2); $j++){
if($str1[$i] == $str2[$j])
$cmp++;
}
}
echo "Number of characters in common: ".$cmp."<br />";
}
compare("stringstring1", "stringstring2");
?>
問題は、それが代わりに24を出力していること、それが私の代わりに6の出力24を与え、私が間違っていたところ、私は見ていないということです今:だからここ
は私の現在のコードです6の?
ますhastableを使用することができます。あなたの複雑さは今O(n ** 2)であり、O(n)でそれを持つことができるハッシュテーブルです。ハッシュテーブルを使用します。 – DarthVader
私は配列関数を使います。 Explode - array_unique - array_intersect - count – Pevara
1)コードをインデントし、スペースを使用してコードを読みやすくします。2)今すぐ最初の文字列の各文字の2番目の文字列全体を調べます。だから 's'(string1から)と' stringstring2'(string2)を比較すると、文字が2回見つかるはずです。これを解決するには、すでに使用している文字を把握する必要があります。たとえば、配列を使用して、両方の文字列にあるすべての一意の文字を入れ、文字が配列内にある場合は、 '$ cmp'をインクリメントする前にチェックすることができます。 – Rizier123