笔记草稿小红书

笔记草稿

http://www.nowcoder.com/questionTerminal/0823ca800ee04706a7e2dafc837dc236

利用堆处理括号匹配问题,用队列来添加字符,运到‘<’符号就从尾部移除一个字符。
注意边界情况,
1.两层嵌套括号
2.当双端队列为空时,遇到‘<’符号

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.Scanner;

public class Main {
    /*
    薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
    1.输入字符包括,"("    ,    ")"    和    "<"和其他字符。
    2.其他字符表示笔记内容。
    3.()之间表示注释内容,任何字符都无效。    括号保证成对出现。
    4."<"表示退格,    删去前面一个笔记内容字符。括号不受"<"影响    。
     */
    public static Deque<Character> editByStr(String inputs){
        Deque<Character> editedWords = new ArrayDeque<>();
        Deque<Character> findAllBrackets = new ArrayDeque<>();
        for (char cur : inputs.toCharArray()){
            if (cur == '('){
                findAllBrackets.push(cur);
                continue;
            }
            if (!findAllBrackets.isEmpty()){
                if (cur == ')'){
                    findAllBrackets.pop();
                }
                continue;
            }
            // 遇到删除符号
            if (!editedWords.isEmpty() && cur=='<'){
                editedWords.removeLast();
            }else {
                editedWords.addLast(cur);
            }
        }
        return editedWords;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String inputs = sc.nextLine();
        sc.close();
        Deque<Character> editedWords = editByStr(inputs);
        Iterator<Character> iter = editedWords.iterator();
        while(iter.hasNext()){
            System.out.print(iter.next());
        }

    }
}
全部评论

相关推荐

昨天 13:43
门头沟学院 Java
投递美团等公司10个岗位
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务