题解 | #点击消除#

点击消除

https://www.nowcoder.com/practice/8d3643ec29654cf8908b5cf3a0479fd5

新手拙见:
思路:1.将字符串切割分开。
           2.准备一个辅助栈,当栈为空或者字符串切割后的元素不等于栈顶,则进栈。
           3.当元素等于栈顶时不进栈,且弹出栈顶元素,循环往复直到字符串切割完。
           4.辅助栈为空则返回字符串“0”,否则返回栈中元素组成的字符串。
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(transfer(str));
    }
    public static String transfer(String str){
        if(str.length()==0){
            return "0";
        }
        Stack<Character> stack = new Stack<>();
         for(int i = 0;i<=str.length()-1;i++){
             if(stack.isEmpty()||stack.peek()!=str.charAt(i)){
                 stack.push(str.charAt(i));
             }else{
                 stack.pop();
             }
         }
        StringBuilder sb = new StringBuilder();
        while(!stack.isEmpty()){
            sb.append(stack.pop());
        }
        sb.reverse();
        return sb.length()==0?"0":sb.toString();
    }
}


全部评论

相关推荐

点赞 评论 收藏
分享
10-15 10:57
已编辑
武昌理工学院 FPGA工程师
狠赚笔第一人:老哥学院本没实习还想拿13k学Java狠赚笔呢
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务