Untitled

 avatar
unknown
php
10 months ago
1.5 kB
5
Indexable
function countWords($text) {
  $wordCounts = [];
  $stack = [];
  $multiplier = 1;

  $words = preg_split('/(\s+|[,.?!]+|[()]+)/', $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

  foreach ($words as $word) {
      if ($word === "(") {
          array_push($stack, "(");
          $multiplier *= 2;
      } elseif ($word === ")") {
          array_pop($stack);
          $multiplier /= 2;
      } elseif (preg_match('/\w+/', $word)) {
          $word = strtolower($word);
          if (!preg_match('/[,.?!]+/', $word)) {
              $wordCounts[$word] = ($wordCounts[$word] ?? 0) + $multiplier;
          }
      }
  }

  $maxCount = 0;
  $maxWord = "";
  foreach ($wordCounts as $word => $count) {
      if ($count > $maxCount) {
          $maxCount = $count;
          $maxWord = $word;
      }
  }

  return ["word" => $maxWord, "count" => $maxCount];
}

$text = "Xin chào các bạn, mình là X. Hôm nay mình sẽ giới thiệu tới các bạn một kiểu dữ liệu rất đặc biệt, đó là map. Map có thể giúp các bạn giải quyết các bài toán tính toán thống kê với độ phức tạp thấp hơn đó (Các bạn có nghe thấy bạn bè của bạn nhắc tới bao giờ chưa?). Các bạn có biết trong các kiểu dữ liệu, map rất thú vị không";

$result = countWords($text);
echo 'Từ khóa xuất hiện nhiều nhất là "' . $result["word"] . '" với số lần xuất hiện là ' . $result["count"];
Editor is loading...
Leave a Comment