当前位置: 首页 > wzjs >正文

西安十大网站制作公司seo优化技术厂家

西安十大网站制作公司,seo优化技术厂家,做公司网站要去哪里找人做,wordpress主题中文文章目录 删除字符串中所有相邻重复项题解代码 比较含退格的字符串题解代码 基本计算器II题解代码 字符串解码题解代码 验证栈序列题解代码 总结 删除字符串中所有相邻重复项 题目链接 题解 1. 用字符串模拟栈的行为,字符串的尾部插入和删除,并且这样…

文章目录

  • 删除字符串中所有相邻重复项
    • 题解
    • 代码
  • 比较含退格的字符串
    • 题解
    • 代码
  • 基本计算器II
    • 题解
    • 代码
  • 字符串解码
    • 题解
    • 代码
  • 验证栈序列
    • 题解
    • 代码
  • 总结

删除字符串中所有相邻重复项

题目链接
在这里插入图片描述

题解

1. 用字符串模拟栈的行为,字符串的尾部插入和删除,并且这样得到的答案是不需要逆置的

代码

class Solution 
{
public:string removeDuplicates(string s) {string st;for(auto ch : s){if(st.size() && ch == st.back()){st.pop_back();}else st.push_back(ch);// 栈为空或者栈顶和数组中的元素不同的情况}return st;}
};

比较含退格的字符串

题目链接
在这里插入图片描述

题解

1. 用字符串模拟栈的行为,和上一题基本上是一样的套路

代码

class Solution 
{
public:bool backspaceCompare(string s, string t) {return cmpstring(s) == cmpstring(t);    }string cmpstring(string s){string st;for(auto ch : s){if(ch != '#') st += ch;else{// 处理字符串中只有#的情况if(st.size()) st.pop_back();}}return st; }
};

基本计算器II

题目链接
在这里插入图片描述

题解

这题可以使用一个数组模拟和一个变量存储运算符

1. 遇到空格直接跳过
2. 遇到数字,第一个数之前的运算符肯定是’+‘,因为题目说明了是非负整数,如果一个数字之前的符号是’+‘或者是’-'就直接加入到栈中,如果是乘号或者是除号就取出栈顶的元素和下一个数进行计算,计算完后再把这个数字加入到栈中,最后栈里面的元素相加就是最终答案
3. 遇到是运算符,就更新运算符,并且移动到下一个位置

在这里插入图片描述

代码

class Solution 
{
public:int calculate(string s) {// 空格的情况如何处理 -> i++// 表达式的基本上都会使用栈处理vector<int> st;char op = '+';int i = 0;int n = s.size();while(i < n){if(s[i] == ' ') i++;else if(s[i] >= '0' && s[i] <= '9'){int tmp = 0;while(i < n && (s[i] >= '0'&& s[i] <= '9')) tmp = tmp * 10 + (s[i++] - '0');// tmp可能是一个多位数if(op == '+') st.push_back(tmp);else if(op == '-') st.push_back(-tmp);else if(op == '*') st.back() *= tmp;else st.back() /= tmp;// 栈顶元素和下一个数相除,并且除完之后就等于重新加入栈顶了}else{op = s[i];i++;}}int ret = 0;for(auto x : st) ret += x;return ret;}
};

字符串解码

题目链接
在这里插入图片描述

题解

分情况讨论

1. 先放入一个空串,防止出现取栈顶元素取不到的情况
2. 遇到左括号,把字符串提取出来,放入栈中,而不是放入栈顶元素的后面,因为前面可能还有数字要加倍这个字符串
3. 遇到右括号,把字符串的栈顶元素和数字栈的栈顶元素提取出来,进行加倍,这就是最近的匹配
4. 遇到普通的前面不带数字的字符串,直接提取出来,放入字符串栈顶元素的后面

在这里插入图片描述

代码

class Solution 
{
public:string decodeString(string s) {stack<string> st;stack<int> ret;st.push("");int i = 0;int n = s.size();while(i < n){if(s[i] >= '0' && s[i] <= '9'){int tmp = 0;while(i < n && (s[i] >= '0' && s[i] <= '9')){tmp = tmp * 10 + (s[i++] - '0'); }ret.push(tmp);}else if(s[i] == '['){i++;string p = "";while(i < n && s[i] >= 'a' && s[i] <= 'z'){p += s[i++];}st.push(p);}else if(s[i] == ']'){int k = ret.top();ret.pop();string tmp = st.top();st.pop();while(k--){st.top() += tmp;}// 怎么把栈顶的字符串提取出来// st.top()i++;}else {string q;while(i < n && s[i] >= 'a' && s[i] <= 'z'){q += s[i++];}st.top() += q;}}return st.top();}
};

验证栈序列

题目链接
在这里插入图片描述

题解

1. 保证让数据一直进栈
2. 并且在进栈的同时,判断是否出栈
3. 所有元素进栈完毕之后,如果popped的i == n说明栈合法,否则不合法,或者是栈为空,也是合法的,否则是不合法的

代码

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

总结

什么时候可以使用栈?
1. 字符串表达式求值,括号匹配,删除相同的相邻元素,最近保存的先出去,都应该用栈来解决
2. 需要处理最近或最后出现的数据
3. 在DFS中,栈用于存储待访问的节点
4. 检查字符串是否为回文
5. 撤销操作: 需要支持回退功能


怎么使用栈解决问题?
1. 模拟
2. 用字符串或者数组模拟栈,st.back(),st.pop_back(),st.push_back()
3. 分情况讨论

提取字符串中长数字字符转为整形的方法
int tmp = 0
int tmp = tmp * 10 + (s[i] - ‘0’)
s[i] - ‘0’ 防止溢出,tmp * 10 + s[i] 可能是超大的

http://www.dtcms.com/wzjs/327142.html

相关文章:

  • 佛山网站建设服务公司百度客服电话
  • 邢台123式的网站怎么做抖音关键词排名优化
  • 天津网站建设 seo搜索引擎优化的方法包括
  • 卡通类型网站上海品牌推广公司
  • 设计本网站怎么样百度知道合伙人官网
  • 网站风格类型有哪些网站如何优化关键词排名
  • 代做广联达 的网站2022年seo还值得做吗
  • 预约支付wordpress合肥seo优化
  • 营销策划好的网站网站维护需要学什么
  • 网站服务器ipv6营销推广方案模板
  • 模板网站做外贸可以吗深圳知名seo公司
  • 肥乡邯郸做网站百度竞价排名怎么收费
  • 上传网站空间怎么让关键词快速上首页
  • flash网站尺寸app拉新推广代理
  • 谁做视频网站淘宝推广哪种方式最好
  • 深圳seo推广外包优化大师卸载不了
  • 免费广告推广网站广告关键词排名
  • 寻找扬中网站建设百度搜索风云榜单
  • 北京综合网络营销哪里好seo的中文意思
  • 做外贸兼职的网站有哪些品牌推广的方式
  • 高端 建站今天最新军事新闻视频
  • 网站设计基础教程html5+css3源代码每日新闻摘抄10一30字
  • 苹果手机怎么做微电影网站吗写手代写平台
  • html5做网站导航页国外免费网站域名服务器查询
  • 灵犀科技 高端网站建设杭州千锋教育地址
  • 网站在vps能访问 在本地访问不了女生学电子商务好吗
  • 中国计算机软考网百度首页关键词优化
  • 广东住房和城乡建设厅网站造价百度地图打车客服人工电话
  • 做网站违法长沙seo外包平台
  • 株洲企业网站制作上海seo推广平台