Let Code符号化問題2021年6月17日-Count and Say
[質問]
The count-and-say sequence is a sequence of digit strings defined by the recursive formula:
For example, the saying and conversion for digit string "3322251":
Given a positive integer n, return the nth term of the count-and-say sequence.
Example 1:
Input: n = 1
Output: "1"
Explanation: This is the base case.
Example 2:
Input: n = 4
Output: "1211"
Explanation:
countAndSay(1) = "1"
countAndSay(2) = say "1"= one 1 = "11"
countAndSay(3) = say "11"= two 1's = "21"
countAndSay(4) = say "21"= one 2 + one 1 = "12"+ "11"= "1211"
(要約)与えられた文字列数が
개수, 숫자, 개수, 숫자, ...
となるようにn
回繰り返した場合、return
の値が得られる(問題は分かりやすいが、言語で説明するのは難しい)[回答] var countAndSay = function(n) {
let answer = '1';
for(let i = 0; i < n - 1; i++) {
answer = change(answer);
}
return answer;
};
function change(num) {
const str = num + '';
const arr = [[0, str[0]|0]];
let index = 0;
for(let i = 0; i < str.length; i++) {
if(arr[index][1] !== (str[i]|0)) {
arr.push([1, str[i]|0]);
index++;
}
else {
arr[index][0]++;
}
}
return arr.flat().join('');
}
デフォルト値は1
で、n - 1
回繰り返します.
重複する内容は、前から現在の数値からなる文字列を数え、同じ数値を別の数値に数え、変更した数値を別の数値に数え、新しい文字列を繰り返し作成します.
以前に同じ数字が出ていても、カウントは再開されます.
配列要素をflat()
で展開すると、並べ替えを行わずに2 D配列を作成し、[個数、数値]として含めることができます.
Reference
この問題について(Let Code符号化問題2021年6月17日-Count and Say), 我々は、より多くの情報をここで見つけました
https://velog.io/@hemtory/LeetCode20210617
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
var countAndSay = function(n) {
let answer = '1';
for(let i = 0; i < n - 1; i++) {
answer = change(answer);
}
return answer;
};
function change(num) {
const str = num + '';
const arr = [[0, str[0]|0]];
let index = 0;
for(let i = 0; i < str.length; i++) {
if(arr[index][1] !== (str[i]|0)) {
arr.push([1, str[i]|0]);
index++;
}
else {
arr[index][0]++;
}
}
return arr.flat().join('');
}
Reference
この問題について(Let Code符号化問題2021年6月17日-Count and Say), 我々は、より多くの情報をここで見つけました https://velog.io/@hemtory/LeetCode20210617テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol