2016-07-03 9 views
0

私はPHP開発の初心者であり、ついには特定の文字数が最大の文章で単語を見つけるプログラムを書くことができました。以下は最大の特定の文字数を持つ文章内の単語を見つける

は、私が試したものです:

<?php 
// Program to find the word in a sentence with maximum specific character count 
// Example: "O Romeo, Romeo, wherefore art thou Romeo?” 
// Solution: wherefore 
// Explanation: Because "e" came three times 
$content = file_get_contents($argv[1]); // Reading content of file 
$max = 0; 
$arr = explode(" ", $content); // entire array of strings with file contents 
for($x =0; $x<count($arr); $x++) // looping through entire array 
{ 
$array[$x] = str_split($arr[$x]); // converting each of the string into array 
} 
for($x = 0; $x < count($arr); $x++) 
{ 
    $count = array_count_values($array[$x]); 
    $curr_max = max($count); 
    if($curr_max > $max) 
    { 
     $max = $curr_max; 
     $word = $arr[$x]; 
    } 
} 
echo $word; 
?> 

質問:私はPHPの開発に新しいですので、私は最適化手法を知りません。とにかく私はこのコードを最適化できますか?また、regexを使ってこのコードをさらに最適化することはできますか?親切にガイドします。

+0

「特定の文字数」とは、具体的にはどういう意味ですか? –

+0

混乱して申し訳ありません。別の例: "abc abbc eeea"。 eが3回来ると答えは "eeea"になります。 – Unbreakable

+2

は、 'for'ループの代わりに' foreach'を使ってどうやって言い換えることができますか分かりません。 'preg_split'を使用して文字列を文字以外の文字に分割します。最後に 'count_chars'を' strtolower'と使用してください –

答えて

1

私はこの種のミニチャレンジを最小限のコード行でコーディングするのが大好きです.D。

$matches = []; 
//a word is either followed by a space or end of input 
preg_match_all('/([a-z]+)(?=\s|$)/i', $sentence, $matches); 
$words = $matches[1]; 

だけ貢献あなたを刺激できます:あなたが唯一のA-Za-z言葉は次のコードを使用取得したい場合は

:D

function wordsWithMaxCharFrequency($sentence) { 

    $words = preg_split('/\s+/', $sentence); 

    $maxCharsFrequency = array_map (function($word) { 
     return max(count_chars(strtolower($word))); 
    }, $words); 

    return array_map(function($index) use($words) { 
     return $words[$index]; 
    }, array_keys($maxCharsFrequency, max($maxCharsFrequency))); 
} 

print_r(wordsWithMaxCharFrequency("eeee yyyy")); 
//Output: Array ([0] => eeee [1] => yyyy) 

print_r(wordsWithMaxCharFrequency("xx llll x")); 
//Output: Array ([0] => llll) 

アップデート1:だからここに私のソリューションです。 !

Good Luck。

+0

あなたの答えをありがとう。あなたは、私がちょうどAZとazを考慮したいのであれば親切に言ってもいいですか?ファイル内容が 'file_get_contents'を使って読んでいる間、残りの文字を無視するにはどうすればいいですか? – Unbreakable

+0

ファイルに' 'aa bbb e ????" '私の答えは「b」と「疑問符ではない」でなければなりません。 – Unbreakable

+0

私の答えは、Update1をご確認ください。 –

関連する問題