ペアリング削除
質問する
もんだいぶんせき
同じ文字が2つある場合は削除します.削除後に同じ文字が2つ存在する場合は、存在しないまで削除します.同じ文字が2つ削除され、残りの文字がない場合は1を返し、ある場合は0を返します.
に答える
コアは
Stack
問題は
コード#コード#
https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%A7%9D%EC%A7%80%EC%96%B4%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0.java
もんだいぶんせき
同じ文字が2つある場合は削除します.削除後に同じ文字が2つ存在する場合は、存在しないまで削除します.同じ文字が2つ削除され、残りの文字がない場合は1を返し、ある場合は0を返します.
に答える
コアは
2
文字を削除します.3個4個...nは連続するすべての文字列を処理し,String.substring()
を用いて前後の文字列を再結合するが,効率の問題からStack
を用いて解決した.Stack
問題は
n개의 연속된 동일한 문자
ではなく、2개의 연속된 동일한 문자
です.現在の文字列を比較するだけで、次の文字列を比較する必要はありません.スタックは効率が高いだけでなく、理解しやすい. Stack<String> stack = new Stack<>();
String[] arr = s.split("");
for(String input : arr){
if(!stack.isEmpty() && stack.peek().equals(input)) //2개가 붙어 있는 짝
stack.pop();
else // 다른 문자
stack.push(input);
}
空の場合、または스택의 TOP
にある文字と異なる場合は스택.push()
であり、逆に스택의 TOP
にある文字と同じ場合は스택.pop()
であり、前の文字と比較するだけでよい.コード#コード#
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = 0;
Stack<String> stack = new Stack<>();
String[] arr = s.split("");
for(String input : arr){
if(!stack.isEmpty() && stack.peek().equals(input)) //2개가 붙어 있는 짝
stack.pop();
else // 다른 문자
stack.push(input);
}
if(stack.isEmpty()) //비어있다면, 모두 짝지을 수 있다면
answer = 1;
return answer;
}
}
GitHubhttps://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%A7%9D%EC%A7%80%EC%96%B4%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0.java
Reference
この問題について(ペアリング削除), 我々は、より多くの情報をここで見つけました https://velog.io/@ds02168/짝지어-제거하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol