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

网站后台字体安装网页设计与制作教程免费

网站后台字体安装,网页设计与制作教程免费,长沙创意网站建设,wordpress主题 cosyLeetCode:394. 字符串解码 本题容易想到用递归处理,在写递归时主要是需要明确自己的递归函数的定义。 不过我们也可以利用括号匹配的方式使用栈进行处理。 1、递归 定义递归函数string GetString(string & s,int & i); 表示处理处理整个numbe…

LeetCode:394. 字符串解码
在这里插入图片描述
本题容易想到用递归处理,在写递归时主要是需要明确自己的递归函数的定义。
不过我们也可以利用括号匹配的方式使用栈进行处理。

1、递归

  • 定义递归函数string GetString(string & s,int & i);
    • 表示处理处理整个number[letter],处理后i指向’]'之后的一个元素
    • letter中有这样的结构时,直接递归处理。
  • 定义函数int GetNum(string & s,int & i);
    • 在遇到数字时调用,表示获取s中前缀的数
      在这里插入图片描述
class Solution {
public:string decodeString(string s) {string target;int len = s.size();for(int i = 0; i < len;){if(s[i] <= 'z' && s[i] >= 'a'){target += s[i ++];}else{target += GetString(s, i);}}return target;}
private:string GetString(string & s,int & i){//处理number[letter],处理后i指向']'之后的一个元素int num = GetNum(s, i);//获取重复次数++ i;//忽略掉'['string str;//获取字符串的前面字符位  3[aa2[cd]ff]while(s[i] != ']'){if(s[i] <= 'z' && s[i] >= 'a'){str += s[i ++];}else{str += GetString(s, i);}}++ i;//忽略掉']'//重复子串string substr = str;while(--num){str += substr;}return str;}
private:int GetNum(string & s,int & i){int num = 0;while(s[i] >= '0' && s[i] <= '9'){num *= 10;num += s[i ++] -'0';}return num;}
};

2、栈操作

这里可以用不定长数组来模拟栈操作,方便从栈底向栈顶遍历。
我们可以使用类似括号匹配的方法,从左到右遍历字符串,将字符串压入栈中,遇到右括号']'则说明,一定会有一个左括号[匹配,我们可以将这之间的内容弹栈并形成一个整体,再从栈顶中拿出数字联合成一个串,压入栈中,以此类推,直到所有的左右括号匹配完,然后再链接所有串。
在这里插入图片描述

  • 时间复杂度: O ( S + ∣ s ∣ ) O(S + |s|) O(S+s)s是最终字符串长度,|s|是原字符串的长度。
    • 需要遍历原字符串一次,并且每一个字符需要入栈一次,每个字符要出栈一次,字符串需要进行连接,最终连接的长度取决于最终字符串长度。
  • 空间复杂度: O ( S ) O(S) O(S)
    在这里插入图片描述
class Solution {
public:string decodeString(string s) {vector<string> sta;for(auto i : s){if(i ==']'){string str;vector<string> temp;//获取[]中的字符串while(sta.back() != "["){temp.push_back(sta.back());sta.pop_back();}for(int j = temp.size() - 1; j >= 0; -- j)str += temp[j];//reverse(str.begin(), str.end());//翻转成正序sta.pop_back();//弹出'['string digitStr;//获取数字串while(sta.size() > 0 && sta.back() >="0" && sta.back() <= "9"){digitStr += sta.back();sta.pop_back();}int num = 0;//获取数字for(int j = digitStr.size() - 1; j >=0; -- j){num *= 10;num += digitStr[j] - '0';}//将number[letter]结合成一个串string substr = str;while(--num) str += substr;sta.emplace_back(str);}else sta.emplace_back(string() + i);}string ans;for(auto & i : sta)ans += i;return ans;}
};
  • 注意这两者的区别:
    • for(int j = temp.size() - 1; j >= 0; -- j) str += temp[j];
    • reverse(str.begin(), str.end());//翻转成正序
  • 前者并不改变栈中字符串内部顺序,而是改变栈中字符串之间的相对顺序
  • 后者会改变栈中字符串的内部顺序
http://www.yayakq.cn/news/779160/

相关文章:

  • 小米路由器3 做网站iis网站服务器安全隐患
  • wordpress网站百度不收录网站建设排名优化技巧
  • wordpress建多语言分站广州市有几个区
  • 网站轮播图用啥软件做个体户可以做网站吗
  • 网站排名优化外包智能建站系统 网站建设的首选
  • 有哪些网站使用ftp一家专门做内部优惠的网站
  • 搭建企业网站网站模板库免费
  • 自己怎样建企业网站郑州企业网站排名优化哪家好
  • 定制app网站omv wordpress
  • 武义县住房和城乡建设局网站网站网站做代理违法吗
  • 做网站时 404网页如何指向公众号开发小程序开发
  • 西宁网站建设君博正规wordpress解密主题
  • 网站虚拟主机建设注册城乡规划师成绩查询2021
  • 家具行业建设网站网站建设需要提供的资料文档
  • 阜阳网站是网站群建设成本分析
  • 住房和城乡建设部政务服务门户网站免费网址怎么申请注册
  • 公司o2o网站建设上海猎头公司排行榜
  • 国外网站空间需要备案吗正规教育培训机构
  • 网站怎么制作成二维码广告创意设计与鉴赏
  • 门户网站开发 论文东莞企业网站定制设计
  • 珠海微信网站开发电商网站前端模板下载
  • 公司建设网站需要什么资质ip做网站
  • 株洲网站建设的企业重庆人才网
  • 网站开发技术概述重庆简易注销在什么网站做
  • 网站建设综合实训心得体会改 wordpress 主题 颜色
  • 宁波专业外贸网站建设有做门窗找活的网站吗
  • html网页设计网站高端网站建设 选择磐石网络
  • 如何进行电子商务网站推广做电子商务网站需要什么手续
  • 做司法亲子鉴定网站建设银行网站短信错误6次
  • 网站开发目录找人做网站如何担保