鉄棒

2024 ワード

質問する
私の答え
import java.util.*;

class Main {
	public int solution(String str) {
			int answer = 0;
			char bf = ' ';
			Stack<Character> stack = new Stack<>();
			for(char x : str.toCharArray()) {
				if(x == '(') {
					bf = x;
					stack.push(x);
				}
				//x= 닫는괄호
				else {
					//lazer
					if(bf == '(') {
						bf = x;
						stack.pop();
						answer+=stack.size();
					}
					//쇠막대기 끝
					else {
						stack.pop();
						answer += 1;
					}
				}
			}
			return answer;
	}

		    
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
	
}
インデックス使用プール
import java.util.*;

class Main {
	public int solution(String str) {
			int answer = 0;
			char bf = ' ';
			Stack<Character> stack = new Stack<>();
			for(int i=0; i<str.length(); i++) {
				if(str.charAt(i) == '(') stack.push(str.charAt(i));
				//x= 닫는괄호
				else {
					stack.pop();
					//lazer
					if(str.charAt(i-1) == '(') answer+=stack.size();
					//쇠막대기 끝
					else answer++;
				}
			}
			return answer;
	}

		    
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
	
}
解答方法
「」()に遭遇した場合は、スタックに入れる必要があります.
右かっこ')'に遭遇した場合は、すぐに前の文字と比較します.
前の文字が「(」面レーザーなので、stackで1つ弾いて、残りのstackの大きさを答えに加えればいいです.
前の文字が「)」なら鉄棒の先なので、答えに+1をつければいいのです.
++個人的にはindexを使うほうがいいと思いますが...
以前の値を保存し続けるのが面倒なので...
コアキー
この答え方は简単に闻こえますが、実力の差だと思います.
カッコを使う問題の大部分はスタックを使うと思います!