问题---点击消除

简介: 问题---点击消除

描述

牛牛拿到了一个字符串

他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。

但相同而不相邻、不相同的相邻字母都是不可以被消除的。

牛牛想把字符串变得尽可能短。他想知道,当他点击了足够多次之后,字符串的最终形态是什么?

输入描述:

一个字符串,仅由小写字母组成。(字符串长度不大于300000)

输出描述:

一个字符串,为“点击消除”后的最终形态。若最终的字符串为空串,则输出0。

public class Main {
    public static void main(String[] args) {
        //获取控制台输入字符串
        Scanner in = new Scanner(System.in);
        //将获取的字符串转换为字符数组
        char[] si = in.nextLine().toCharArray();
        //调用方法进行消除
        erase(si);
    }
    public static void erase(char[] si) {
        //声明辅助栈
        Stack<Character> sin = new Stack<>();
        //对字符数组进行遍历
        for (int i = 0; i < si.length; i++) {
            //如果栈不为空且栈顶元素和当前元素相等,则将栈顶元素出栈
            if(!sin.isEmpty()&&sin.peek()==si[i]){
                sin.pop();
            }else{
                //将元素入栈
                sin.push(si[i]);
            }
        }
        //遍历完后,判断栈是否为空
        if (sin.isEmpty()) {
             System.out.print(0);
             //不为空就遍历输出栈中的元素
        } else {
            for (int i = 0; i < sin.size(); i++) {
                //利用栈中的get方法获取元素
                System.out.print(sin.get(i));
            }
        }
    }

本次实现,主要的还是用栈来解决这个问题,将字符串转换为字符数组,然后用一个for循环来处理,若栈为空就将本次元素加入,不为空就将本次元素和栈顶元素比较,如果相同则取出栈顶元素,不相同就将本次元素加入栈中。遍历完了之后,再看栈中是否还有元素,如果有就遍历输出栈中元素!!!

相关文章
|
5月前
|
监控 Serverless 算法框架/工具
函数计算操作报错合集之选中图中部分后报错,但去掉后可以正常请求,是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
5月前
|
Serverless 文件存储 对象存储
函数计算操作报错合集之如何处理安装了ControlNet但无法加载出预览图并报错
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
函数计算操作报错合集之如何处理安装了ControlNet但无法加载出预览图并报错
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
分页列表数据不出来,初始化页面数据不出来的原因,Create中传一个参数1,解决bug的方法,学习敲代码的时候仔细与原项目比对,从上比到下
|
存储 缓存 前端开发
28个案例问题分析---013---学情页面逻辑问题--LocalStorage
28个案例问题分析---013---学情页面逻辑问题--LocalStorage
121 1
|
存储 iOS开发
出现下图提示是什么原因呢?
iOS打包被拒,提示错误消息,账号有问题,呢是什么原因
医学四视图-007-增加按钮,增加文档提示
医学四视图-007-增加按钮,增加文档提示
295 0
医学四视图-007-增加按钮,增加文档提示
|
大数据 开发工具 git
还在使用Window原始的CMD界面?教你一招进行界面完美优化(上)
还在使用Window原始的CMD界面?教你一招进行界面完美优化
448 0
还在使用Window原始的CMD界面?教你一招进行界面完美优化(上)
还在使用Window原始的CMD界面?教你一招进行界面完美优化(下)
还在使用Window原始的CMD界面?教你一招进行界面完美优化
139 0
还在使用Window原始的CMD界面?教你一招进行界面完美优化(下)
|
Shell
SAP成本中心修改后点保存按钮后触发增强FM的调试过程【cmod】【smod】
成本中心的前台操作事务码是ks01 ks02创建和保存,画面如下我们的目标是,点击上图中的【保存】按钮时,触发增强中的FM。进入事务码CMOD成本中心主数据的保存,触发的增强内容是COOMKS02,为什么是它?这件事我们以后再说。
2589 0