1. <?php
    2. class Solution {
    3. /**
    4. * @param Integer $n
    5. * @return String
    6. */
    7. public function countAndSay($n) {
    8. if ($n < 1) {
    9. return '';
    10. }
    11. if ($n == 1) {
    12. return '1';
    13. }
    14. $str = strval($this->countAndSay($n - 1));
    15. $lastS = substr($str, 0, 1);
    16. $countMap = [];
    17. $newStr = '';
    18. for ($i = 0; $i < strlen($str); $i++) {
    19. if ($str[$i] != $lastS) {
    20. $newStr .= $countMap[$lastS] . $lastS;
    21. unset($countMap[$lastS]);
    22. $lastS = $str[$i];
    23. }
    24. if (isset($countMap[$lastS])) {
    25. $countMap[$lastS]++;
    26. } else {
    27. $countMap[$lastS] = 1;
    28. }
    29. }
    30. $newStr .= $countMap[$lastS] . $lastS;
    31. return $newStr;
    32. }
    33. }
    34. $n = 10;
    35. $cls = new Solution();
    36. $str = $cls->countAndSay($n);
    37. echo $str;