プール→ペアリング削除
5151 ワード
除去
問題の説明
ペアリングを削除するには、アルファベット小文字の文字列で開始します.まず、文字列内で同じ文字を2つ持つペアを検索します.次に、この2つの文字列を削除し、前後に文字列を接続します.この手順を繰り返してすべての文字列を削除すると、ペアリングの削除が終了します.文字列Sが指定されている場合は、ペアリングを正常に削除できるかどうかを返す戻り関数を完了します.成功した場合は1を返し、そうでない場合は0を返します.
例えば、文字列S=Baabaab aa baa → bb aa → aa →
すべての文字列を中の順序で削除できるため、1を返します.
##制限
文字列の長さ:100,000未満の自然数
すべての文字列は小文字で構成されています.
に答える
典型的なスタック問題
積み重ねる方向に取れば簡単に解決できるようです.
b aa baa → bb aa → aa →
stack.length ? 0:1
// 효율성 테스트 시간 초과 발생
function solution(s) {
const stack = []
for (const i in s) {
if (s[i] === stack[stack.length - 1]) stack.pop()
else stack.push(s[i])
}
return stack.length ? 0 : 1
}
for inを使用すると、効率テストに失敗します.// 통과
function solution(s) {
const stack = []
for (let i = 0; i < s.length; i++) {
if (s[i] === stack[stack.length - 1]) stack.pop()
else stack.push(s[i])
}
return stack.length ? 0 : 1
}
全く同じ論理を使うfor
効率テストに合格.どうしてこんなことになったの?🤔
forとfor-in,foreach
foreach
orfor-in
反復器を使っているので若干の出費for
メモリ領域への直接アクセスのため性能損失なしReference
この問題について(プール→ペアリング削除), 我々は、より多くの情報をここで見つけました https://velog.io/@cckn/알고리즘-풀이-짝지어-제거하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol