【每日算法】AB5 点击消除

简介: 【每日算法】AB5 点击消除

问题

描述

牛牛拿到了一个字符串。
他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。
但相同而不相邻、不相同的相邻字母都是不可以被消除的。
牛牛想把字符串变得尽可能短。他想知道,当他点击了足够多次之后,字符串的最终形态是什么?

输入描述:

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

输出描述:

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

示例1

输入:abbc
输出:ac

示例2

输入:abba
输出:0

示例3

输入:bbbbb
输出:b

代码

#include <stdio.h>
#include <string.h>

struct stack {
    int size;
    int top;
    char data[300001];
} stack;

void init(struct stack* sk) {
    sk->top = 0;
    sk->size = 0;
}

void push(struct stack* sk, char a) {
    sk->data[sk->top] = a;
    sk->size ++;
    sk->top ++;
}

char top(struct stack* sk) {
    return sk->data[sk->top - 1];
}

char pop(struct stack* sk) {
    sk->size --;
    sk->top --;
    return sk->data[sk->top];
}

int main() {
    char str[300001];
    scanf("%s\n", str);
    int len = strlen(str);
    struct stack sk;
    init(&sk);
    for (int i = 0; i < len; i++) {
        if (sk.size == 0) {
            // printf("push %c\n", str[i]);
            push(&sk, str[i]);
        } else if (str[i] == top(&sk)) {
            // printf("push %c\n", str[i]);
            pop(&sk);
        } else{
            push(&sk, str[i]);
        }
    }
    if (sk.size == 0) {
        printf("0\n");
    } else {
        for (int i = 0; i < sk.top; i ++) {
            printf("%c", sk.data[i]);
        }
    }
    return 0;
}

思路

还是遍历,再判断字符是否等于栈顶,如果不等于或者栈为空就进栈,否则出栈

目录
相关文章
|
8月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
1077 0
|
5月前
|
SQL 算法 Serverless
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
40 1
|
7月前
|
算法
算法特训,AB5 .点击消除BC.149简写单词牛客.除2!牛客.Fibonacci数列
算法特训,AB5 .点击消除BC.149简写单词牛客.除2!牛客.Fibonacci数列
算法入门小题目——点击消除
算法入门小题目——点击消除
|
算法
【算法入门】 有效括号序列|逆波兰表达式求值|点击消除(下)
【算法入门】 有效括号序列|逆波兰表达式求值|点击消除
95 0
|
算法 UED
【算法入门】 有效括号序列|逆波兰表达式求值|点击消除(上)
【算法入门】 有效括号序列|逆波兰表达式求值|点击消除
82 0
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
4天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
|
13天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
14天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真

热门文章

最新文章