プログラマ|文字列圧縮JS
1687 ワード
難易度:Level.2
言語:Javascript
見積履歴:2020 KAKAO BLIND RECRUITMENT
圧縮文字表現の最短文字列長は?
条件に基づいて文字列のコードを割り当てます.
参考にしたブログを下記に残しておきます.
条件を満たす文字列の長さを含む配列を作成します.
文字列を配布するための重複文を作成します.
条件文字を取得し、次の文字と比較して同じ場合はcount値を上げます.
そうでない場合はcount値を前にし、その文字を後ろに置いて配列に入れます.
ただし、countが1の場合は文字のみ入力します.
長さ配列に入れます.
すべての繰り返し文が完了すると、長さ配列の最小値がエクスポートされます.
文字列の分割スケジュール
言語:Javascript
見積履歴:2020 KAKAO BLIND RECRUITMENT
❓ Question
圧縮文字表現の最短文字列長は?
📝 My Solution
フルプールコード 👈🏻 クリックしてGithubに移動
function chunkString(str, length) {
return str.match(new RegExp('.{1,' + length + '}', 'g'));
}
文字列圧縮の核心はこのコードであるべきです.条件に基づいて文字列のコードを割り当てます.
参考にしたブログを下記に残しておきます.
function solution(s) {
let newArr = [];
const lengthArr = [];
for (let i = 0; i<s.length; i++) {
let result = [];
newArr = chunkString(s, i+1)
let count = 1;
まず、文字列をいくつかの配列に分けます.条件を満たす文字列の長さを含む配列を作成します.
文字列を配布するための重複文を作成します.
for (let l = 0; l<newArr.length; l++) {
let stand = newArr[l];
if (stand === newArr[l+1]) {
count++
} else {
if (count === 1) {
result.push(stand);
stand = newArr[l+1]
} else {
result.push(count);
result.push(stand);
count = 1;
stand = newArr[l+1]
}
}
次の繰り返し文では、別々の文字を比較します.条件文字を取得し、次の文字と比較して同じ場合はcount値を上げます.
そうでない場合はcount値を前にし、その文字を後ろに置いて配列に入れます.
ただし、countが1の場合は文字のみ入力します.
}
lengthArr.push(result.join("").length)
result = [];
}
return Math.min(...lengthArr)
}
結果のすべての文字列を結合し、長さ配列に入れます.
すべての繰り返し文が完了すると、長さ配列の最小値がエクスポートされます.
結果
コメントブログ
Reference
この問題について(プログラマ|文字列圧縮JS), 我々は、より多くの情報をここで見つけました https://velog.io/@sstaar91/Algorithm-Programmers-CompressStrテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol