アルゴリズム学習9週目[実施]01
2171 ワード
白駿17413号問題
質問:単語の反転2
問題の説明:文字列を受信し、出力単語を反転するプログラムです。この場合、重要なのは<>の内容をそのまま印刷するプログラムです。
コード:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_17413 {
public static void main(String[] argv) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
Stack<Character> st = new Stack<>();
boolean tf =false;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='<'){
tf=true;
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else if(str.charAt(i)=='>'){
tf = false;
System.out.print(str.charAt(i));
}
else if(tf ==true){
System.out.print(str.charAt(i));
}
else{
if(str.charAt(i)==' '){
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else{
st.push(str.charAt(i));
}
}
}
while(!st.isEmpty()){
System.out.print(st.pop());
}
}
}
質問:
本問題はスタックを用いてboolean型変数を設定して解くべきである.まず文字列を入力して保存し、for文でcharat()を1つずつ繰り返します.その後if~else if文を使用します.if文に「<」が初めて入力された場合、tfをtrueに変更し、スタックに格納された値をその前に出力します.これはスタックです.そのため、先入後出構造であり、逆出力になります.その後「>」が表示され、tfをfalseに変換して「>」が出力されます.その前はtrueなので、trueならそのままforゲートを回して直接出力します.falseの場合、空白が表示される前にスタックにスタックし、get downと呼ばれる出力を反転すると、最後のdownは最後のwhile文でスタックを出力します.
Reference
この問題について(アルゴリズム学習9週目[実施]01), 我々は、より多くの情報をここで見つけました
https://velog.io/@jaehyukjung/알고리즘-스터디-9주차구현01
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_17413 {
public static void main(String[] argv) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
Stack<Character> st = new Stack<>();
boolean tf =false;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='<'){
tf=true;
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else if(str.charAt(i)=='>'){
tf = false;
System.out.print(str.charAt(i));
}
else if(tf ==true){
System.out.print(str.charAt(i));
}
else{
if(str.charAt(i)==' '){
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else{
st.push(str.charAt(i));
}
}
}
while(!st.isEmpty()){
System.out.print(st.pop());
}
}
}
Reference
この問題について(アルゴリズム学習9週目[実施]01), 我々は、より多くの情報をここで見つけました https://velog.io/@jaehyukjung/알고리즘-스터디-9주차구현01テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol