Look And Say 序列 php
阿新 • • 發佈:2018-12-27
Look and say 序列,因為每個元素通過檢視前一個元素並說出其中是什麼得來的。例如:檢視第一個元素 1 ,你會說 “一個 1”,所以第二個元素就是 “11”。這就是兩個 1 ,所以第三個元素是 “21”。類似的,這裡有一個 2 和一個 1 ,所以第四個元素是 “1211”,以此類推。
程式碼實現:
function lookAndSay($s) {
$r = ''; // 定義個返回結果的變數,初始化為空字串
$m = $s[0]; // $m 表示要統計的字元,初始化為字串的第一個字元
$n = 1; // $n 表示已經檢視過 $m 的個數,初始化為 1
for($i = 1; $j = strlen($s); $i < $j; $i++) {
if($s[$i] == $m) {
// 如果當前的字元和上一個字元相同,統計這個字元的數量加 1
$n++;
}else {
// 否則,拼接字元
$r .= $n . $m;
// 將要查詢的字元設定為當前字元
$m = $s[$i];
// 重置統計字元的個數為 1
$n = 1 ;
}
}
// 最後一個數字需要在最後拼接到結果中
return $r . $n . $m;
}
// 顯示出前 10 個 Look And Say 序列
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211