网站的icp备案信息是什么/百度首页登录

网站的icp备案信息是什么,百度首页登录,如何在网站搜关键字,网站开发无使用期限怎么摊销1.删除字符串中所有相邻的重复字符 注意,我们需要重复处理,而不是处理一次相邻的相同元素就结束了。对示例来说,如果只进行一次处理,结果为aaca,但是处理之后又出现了相邻的重复元素,我们还得继续处理&…

1.删除字符串中所有相邻的重复字符

注意,我们需要重复处理,而不是处理一次相邻的相同元素就结束了。对示例来说,如果只进行一次处理,结果为aaca,但是处理之后又出现了相邻的重复元素,我们还得继续处理,最后结果就是ca。

解法:借助栈来模拟

        我们可以将字符串中的元素依次入栈,元素入栈前判断是否与栈顶元素相等,如果相等就弹出栈顶元素,继续判断下一个元素。等到字符串全部入栈,栈中的就是最终答案。

但是我们没有必要弄一个stack出来,因为这样最终结果是逆序的,我们可以采用string来模拟栈的行为。 

时间复杂度:O(n)

空间复杂度:O(n) 

class Solution 
{
public:string removeDuplicates(string s) {// 用string模拟栈string ret;for(auto e : s){if(ret.size() && ret.back() == e) ret.pop_back();else ret.push_back(e);}return ret;}
};

2.比较含退格的字符串 

解法1:使用栈来模拟 

        我们可以封装一个函数出来,用来处理字符串中的退格符。然后比较处理之后的字符串即可。而处理字符串的过程,就可以使用栈来模拟,如果不是#就入栈,如果遍历到#就弹出栈顶元素。这一步依旧可以采取string模拟,避免reverse。 

时间复杂度:O(n+m),n和m分别为s,t的长度,遍历两个字符串各一次

空间复杂度:O(m+n),处理字符串时,最坏情况下两者都没有退格符

bool _backspaceCompare(string s, string t) 
{return reBulidString(s) == reBulidString(t);
}string reBulidString(string str)
{string ret;for(auto e : str){if(e == '#' && ret.size()) ret.pop_back();else if(e != '#') ret.push_back(e);}return ret;
}

 解法2:双指针

        因为退格符只会对前面的字符产生影响,所以我们可以逆序遍历字符串。 我们分别定义skipS和skipT来记录当前的退格次数。如果如果#则skipS++,如果遍历到普通字符,则看skipST是否为0,如果为0,则表示这个字符肯定会留下来,接着就去遍历t字符串,找到一个不会被删除的字符,然后判断这两个字符是否相等。如果不相等,则返回false;如果一个字符串为空了,另一个还有,则也返回false。

但是有一种情况需要注意,如果两个字符串最后一个字符是#,或者最后一个字符被删除了,此时两者都越界了,此时返回true。

时间复杂度:O(m+n)

空间复杂度:O(1)

    bool backspaceCompare(string s, string t) {int i = s.size() - 1, j = t.size() - 1;int skipS = 0, skipT = 0;while(i >= 0 || j >= 0) // 这里为什么是或{// 在S中寻找不会被删除的字符while(i>=0){if(s[i] == '#') skipS++, i--;else if(skipS) skipS--, i--;else break; // 退出该循环说明当前这个字符不会被删除}// 在T中寻找不会被删除的字符while(j>=0){if(t[j] == '#') skipT++, j--;else if(skipT) skipT--, j--;else break; // 当前字符不会被删除}if(i>=0 && j>=0){if(s[i] != t[j]) return false;}else if(i>=0 || j>=0) return false;i--, j--;}return true;}

3.基本计算器2 

解法:栈模拟

         我们有可能会遇到空格,数字或者运算符,因为优先级的原因,我们如果遇到+/-时不能直接计算,我们采取的策略是将其先放入到栈中,为了避免+/-的运算不同,所以如果是+号,则直接存储到栈中,如果是-号,则将其相反数压入栈中。这样栈中的元素只需要进行加法运算即可。

如果遇到乘号或者除法,则我们直接将后面的数乘或除到栈顶元素上。等遍历完字符串后,直接将栈中的元素加起来即可。

需要注意的是,数字并不只是一位数,所以我们在遇到数字,需要将后面的数字也提取出来,并且要注意位数。

时间复杂度:O(n)

空间复杂度:O(n)

class Solution 
{
public:int calculate(string s) {   stack<int> calc;// 处理运算符char option = '+'; //第一个数前面的运算符被视为加号for (int i = 0; i < s.size();){// 处理空格if(s[i] == ' '){i++;}else if(isdigit(s[i]))//先获取数字,数字可能是多位数{int tmp = 0;while(i<s.size() && isdigit(s[i])){tmp = tmp*10 + (s[i++]-'0');}//判断该数前面的符号是什么// 加减直接将数字压入栈中,减法压入负数// 乘除让栈顶数据*= / /= 上当前的数字if(option == '+') calc.emplace(tmp);else if(option == '-') calc.emplace(-tmp);else if(option == '*') calc.top() *= tmp;else calc.top() /= tmp;}else // 如果是操作符,则更新操作符{option = s[i];i++;}}// 栈中的元素使用加法计算即可int ret = 0;while (!calc.empty()){ret += calc.top();calc.pop();}return ret;}
};

4.字符串解码 

我们在进行解码的时候要从最内部开始解码,因为最外层的方括号内部可能还嵌套这其他方括号。

解法:栈+分类讨论

        我们在遍历字符串的时候,可能遇到数字,左方括号,右方括号,和字母。而我们要分别存储数字和字母,所以借助两个栈来实现。

如果遇到数字,我们就提取该数字,因为可能是多位数,所以要循环提取,然后将该数压入到数字栈中。

如果遇到了左括号,我们接下来就提取字符串,然后压入到字符栈中。

如果遇到了右括号,说明这是最内层的,此时就可以进行解析。解析之后,我们还得将该结果接到栈顶元素的后面。

如果遇到了字母,则提取该字母,因为该字母并没有出现在括号中,所以没有进行重复,直接插入到栈顶元素的后面即可。

细节:因为字符栈有可能为空,这时向栈顶元素后面加上字符就会报错。所以我们可以提前给栈顶元素压入一个空串。避免这种情况。

时间复杂度:O(S),除了遍历原字符串,每一次解码都会将其连接到栈顶元素。

空间复杂度:O(S),解码后的字符串长度 

class Solution
{
public:string decodeString(string s){stack<int> nst;stack<string> sst;sst.emplace("");int i = 0, n = s.size();while (i < n){// 1.如果遇到数字,则提取数字放入数字栈中if (isdigit(s[i])){int tmp = 0;while (i < n && isdigit(s[i]))tmp = tmp * 10 + (s[i++] - '0');nst.emplace(tmp);}// 2.如果是左括号,则提取左括号后面的字符串else if (s[i] == '['){i += 1;string t;while (i < n && s[i] <= 'z' && s[i] >= 'a')t += s[i++];sst.emplace(t);}// 3.如果是右括号,则拿出两个栈的栈顶进行解析,并将解析后的结果接到sst栈顶的后面else if (s[i] == ']'){//解析string t;int count = nst.top();nst.pop();while (count--) t += sst.top();sst.pop();//更新sst.top() += t;i++;// 遍历下一个位置}// 4.如果直接遇到字母,则直接加到字符栈顶元素的后面else{string t;while (i < n && s[i] <= 'z' && s[i] >= 'a')t += s[i++];sst.top() += t;}}return sst.top();}
};

5.验证栈序列 

这道题在学习栈的时候是经常会遇到的一道题,判断入栈顺序能否满足出栈顺序。 

解法:模拟

        我们按照入栈顺序进行入栈,然后判断栈顶元素与出栈元素是否相等,如果相等,则出栈,然后指针指向下一个出栈元素。如果不相等,则继续入栈。

如果最后栈为空,则说明满足,否则不满足。

时间复杂度:O(n)

空间复杂度:O(n)

class Solution 
{
public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> st;for(int i=0, j=0; i<pushed.size(); ++i){st.emplace(pushed[i]);while(!st.empty() && st.top() == popped[j]){st.pop();j++;}}return st.empty();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda的基本使用及pycharm里设置conda环境

创建conda环境 conda create --name your_env_name python3.8 把your_env_name换成实际的conda环境名称&#xff0c;python后边的根据自己的需要&#xff0c;选择python的版本。 激活conda环境 conda activate your_env_name 安装相关的包、库 conda install package_name …

synchronized与 Java内置锁(未写完)

文章目录 一、 synchronized 关键字二、Java对象结构1. 对象头2. 对象体3. 对齐字节4. 对象头中的字段长度5. Mark Word 的结构信息6. 使用 JOL 工具查看对象的布局 三、Java 内置锁机制3.1 内置锁的演进过程1. 无锁状态2. 偏向锁状态3. 轻量级锁状态4. 重量级锁状态 一、 sync…

LLM(3): Transformer 架构

Transformer 架构是当前大语言模型的主力架构和基础技术&#xff0c;本文以通俗易懂的方式&#xff0c;对此作简要介绍。 1.4 介绍 Transformer 架构 大多数现代的大规模语言模型&#xff08;LLMs&#xff09;依赖于 Transformer 架构&#xff0c;这是一种在 2017 年的论文《…

88.HarmonyOS NEXT 性能监控与调试指南:构建高性能应用

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT 性能监控与调试指南&#xff1a;构建高性能应用 文章目录 HarmonyOS NEXT 性能监控与调试指南&#xff1a;构建高性能应用1. 性能监…

012---状态机的基本知识

1. 摘要 文章为学习记录。主要介绍状态机概述、状态转移图、状态编码、状态机写法、状态机代码示例。 2. 状态机概述 状态机 &#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机&#xff0c;用于描述有先后顺序或时序规律的事情。 “同步”&…

deepseek+kimi做ppt教程记录

1.首先注册deepseek和kimi deepseek官网&#xff1a;https://chat.deepseek.com/ kimi官网&#xff1a;https://kimi.moonshot.cn/ 以下以一篇工作总结报告为例 2.使用deepseek生成ppt大纲 让deepseek生成kimi生成ppt所需要的内容时&#xff0c;需要注意提示词内容&#xff0c;…

【Linux内核系列】:文件系统收尾以及软硬链接详解

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 世界上只有一种个人英雄主义&#xff0c;那么就是面对生活的种种失败却依然热爱着生活 内容回顾 那么在之前的学习中&#xff0c;我们…

最新版Chrome浏览器加载ActiveX控件技术--allWebPlugin中间件一键部署浏览器扩展

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

基于SpringBoot和MybatisPlus实现通用Controller

基于SpringBoot和MybatisPlus实现通用Controller&#xff0c;只需要创建实体类和mapper接口&#xff0c;单表增删改查接口就已经实现&#xff0c;提升开发效率 1.定义通用controller package com.xian.controller;import cn.hutool.core.map.MapUtil; import com.baomidou.my…

Axure大屏可视化原型模板及素材:数据可视化的高效解决方案

数据可视化已成为企业决策、运营分析、市场洞察的重要工具。数据可视化大屏&#xff0c;作为数据展示和交互的直观平台&#xff0c;能够实时呈现关键数据&#xff0c;帮助企业快速做出决策。Axure作为原型设计领域的领先工具&#xff0c;以其丰富的组件库、强大的交互设计能力和…

YOLOE:实时查看任何事物

摘要 https://arxiv.org/pdf/2503.07465v1 目标检测和分割在计算机视觉应用中得到了广泛应用&#xff0c;然而&#xff0c;尽管YOLO系列等传统模型高效且准确&#xff0c;但它们受限于预定义的类别&#xff0c;阻碍了在开放场景中的适应性。最近的开放集方法利用文本提示、视觉…

這是我第一次寫關於aapenal服務器管理控制面板的文章

首先我們來認識一下服務器管理面板的所有功能  網站管理功能&#xff1a; 支持創建和管理多個網站。配置虛擬主機&#xff08;Vhost&#xff09;和域名綁定。自動安裝常用應用&#xff08;如WordPress、Joomla等&#xff09;。  文件管理功能&#xff1a; 文件上傳、…

jmeter:登录接口的token用于下一个接口

问题&#xff1a; 仅仅登录接口可以使用&#xff0c;其他接口进行测试的时候都是报错&#xff1a;账号已经失效 原因&#xff1a; 应该是登录接口的token并没有用到下一个接口上来 解决方法 1、目录建设如下&#xff1a; 2、先添加一个后置处理器&#xff1a;查看结果数&…

1、操作系统引论

一、操作系统 会使用linux系统 建议大家先学会linux的基础指令&#xff0c;可以看菜鸟教程网站进行学习。 1、各种定义 操作系统定义 管理计算机的 硬件 和软件资源&#xff0c; 能对各类作业进行调度&#xff0c;方便用户使用计算机的程序集合。操作系统运行在内核态&#xf…

SpringCloud系列教程(十四):Sentinel持久化

Sentinel之前已经搭建和应用成功了&#xff0c;但是它有一个很大的缺点就是官方没有提供持久化的方案&#xff0c;从项目源码上看感觉这款工具也没有完成的太好&#xff0c;所以需要我们去对它进行二次开发。要补充的功能大概如下&#xff1a; 1、将Sentinel接入nacos中&#…

Go语言环境搭建并执行第一个Go程序

目录 一、Windows环境搭建 二、vscode安装插件 三、运行第一个go程序 一、Windows环境搭建 下载Go&#xff1a;All releases - The Go Programming Language 这里是Windows搭建&#xff0c;选择的是windows-amd64.msi&#xff0c;也可以选择zip直接解压缩到指定目录 选择msi…

Java数据结构第二十三期:Map与Set的高效应用之道(二)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、哈希表 1.1. 概念 1.2. 冲突 1.3. 避免冲突 1.4. 解决冲突 1.5. 实现 二、OJ练习 2.1. 只出现一次的数字 2.2. 随机链表的复制 2.3. 宝石与石头 一、哈希表 1.1. 概念 顺序结构以及平衡树中…

OpenHarmony子系统开发 - Rust编译构建指导

OpenHarmony子系统开发 - Rust编译构建指导 一、Rust模块配置规则和指导 概述 Rust是一门静态强类型语言&#xff0c;具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust官方也使用Cargo工具来专门为Rust代码创建工程和构建编译。 OpenHarmony为了集成C…

STM32驱动代码规范化编写指南(嵌入式C语言方向)

点击下面图片&#xff0c;为您提供全新的嵌入式学习路线 文章目录 一、命名规范体系1.1 变量/函数命名1.2 宏定义规范1.3 类型定义 二、代码结构组织2.1 文件组织结构2.2 头文件规范模板 三、注释体系构建3.1 Doxygen风格示例3.2 复杂逻辑注释 四、硬件抽象层设计4.1 寄存器封…

Trae与Builder模式初体验

说明 下载的国际版&#xff1a;https://www.trae.ai/ 建议 要选新模型 效果 还是挺不错的&#xff0c;遇到问题反馈一下&#xff0c;AI就帮忙解决了&#xff0c;真是动动嘴&#xff08;打打字就行了&#xff09;&#xff0c;做些小的原型效果或演示Demo很方便呀&#xff…