2434. 使用机器人打印字典序最小的字符串

点击跳转题目

本题学到两点:

1.初始化数组,全部为0的简单写法。之前都是

cpp 复制代码
int arr[26];
memset(arr,0,sizeof(arr));

2.if条件中的&&部分左右顺序不能颠倒。颠倒报错,之前一直没重视。

思路:

遍历s,push当前字符,如果当前的栈顶元素<=余下字符串中发最小字符,则pop并加到结果中。否则一直push到栈中。

cpp 复制代码
class Solution {
public:
    string robotWithString(string s) {
        int arr[26]{};              //简单写法
        for(char c :s) arr[c-'a']++;
        stack<char> st;
        string ans;
        for(char c:s){
            int i=0;
            --arr[c-'a'];
            while(i<26 && arr[i]==0) i++;
            st.push(c);
            while(!st.empty() && st.top()-'a'<=i){          //顺序颠倒会报错,因为使用top()存在栈不空的前提
                ans+=st.top();
                st.pop();
            }
        }
        return ans;
    }

};
相关推荐
不爱吃炸鸡柳3 分钟前
5道经典贪心算法题详解:从入门到进阶
开发语言·数据结构·c++·算法·贪心算法
枫叶林FYL10 分钟前
【自然语言处理 NLP】8.3 长文本推理评估与针在大海堆任务
人工智能·算法
智者知已应修善业12 分钟前
【51单片机1,左边4个LED灯先闪烁2次后,右边4个LED灯再闪烁2次:2,接着所用灯一起闪烁3次,接着重复步骤1,如此循环。】2023-5-19
c++·经验分享·笔记·算法·51单片机
xiaoye-duck18 分钟前
《算法题讲解指南:优选算法-队列+宽搜》--70.N叉树的层序遍历,71.二叉树的锯齿形层序遍历,72.二叉树的最大宽度,73.在每个树行中找最大值
数据结构·c++·算法·队列
汀、人工智能20 分钟前
[特殊字符] 第98课:数据流中位数
数据结构·算法·数据库架构··数据流·数据流中位数
Eloudy24 分钟前
不同特征值的特征向量互相正交的矩阵
人工智能·算法·机器学习
人道领域26 分钟前
【LeetCode刷题日记】:从 LeetCode 经典题看哈希表的场景化应用---数组、HashSet、HashMap 选型与算法实战
算法·leetcode·面试
努力努力再努力wz26 分钟前
【C++高阶系列】告别内查找局限:基于磁盘 I/O 视角的 B 树深度剖析与 C++ 泛型实现!(附B树实现源码)
java·linux·开发语言·数据结构·c++·b树·算法
承渊政道27 分钟前
【优选算法】(实战攻坚BFS之FloodFill、最短路径问题、多源BFS以及解决拓扑排序)
数据结构·c++·笔记·学习·算法·leetcode·宽度优先