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

1m带宽网站支持多少人同时在线宁德蕉城住房和城乡建设部网站

1m带宽网站支持多少人同时在线,宁德蕉城住房和城乡建设部网站,专业做设计的网站,wordpress安装主题leetcode原题链接: 字符串解码 题目描述 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输…

       leetcode原题链接: 字符串解码

题目描述

        给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

示例 1:

输入:s = "3[a]2[bc]"
输出:"aaabcbc"

示例 2:

输入:s = "3[a2[c]]"
输出:"accaccacc"

示例 3:

输入:s = "2[abc]3[cd]ef"
输出:"abcabccdcdcdef"

示例 4:

输入:s = "abc3[cd]xyz"
输出:"abccdcdcdxyz"

提示:

  • 1 <= s.length <= 30
  • s 由小写英文字母、数字和方括号 '[]' 组成
  • s 保证是一个 有效 的输入。
  • s 中所有整数的取值范围为 [1, 300] 

解题方法:采用栈。遍历字符串,用字符串变量result保存最终的结果,遍历过程中用栈保存当前需要扩展的次数和待扩展字符串的首字母在result中的位置 。具体如下:

1)遇到数字,计算下需要扩展的次数;

2)遇到字母,则将字母追加到结果变量result中;

3)遇到[, 则将<扩展的次数count,扩展首字母在扩展遍历result中的位置> 保存在栈中,同时重置count的值为0;

4)遇到], 则开始扩展字符, 扩展的次数和扩展的字符都可以通过栈中的信息拿到。扩展完后,要将栈顶元素弹出。因为可能会有嵌套扩展的情况。如:3[a2[c]]

C++代码

#include <iostream>
#include <stack>
#include <string>
#include <utility> // std::pair
#include <cctype> //isdigit(), isalpha()
/*
* 解题方法:
* 扫描字符串:
*    1. 遇到数字,计算下需要扩展的次数
*    2. 遇到字母,则将字母追加到结果变量result中
*    3. 遇到[, 则将<扩展的次数count,扩展首字母在扩展遍历result中的位置>保存在栈中,同时重制count的值为0
*    4. 遇到], 则开始扩展字符, 扩展的次数和扩展的字符都可以通过栈中的信息拿到,扩展完后,要将栈顶元素弹出。因为可能
*            会有嵌套扩展的情况。
*/
class Solution {
public:string decodeString(std::string s) {int n = s.size();std::stack<std::pair<int, int>> st; //保存<本次扩展的次数count, 扩展字符串在result的开始位置>std::string result;int count = 0;for (int i = 0; i < n; i++) {if (isdigit(s[i])) { //数字count = 10 * count + (s[i] - '0');} else if (s[i] == '[') { //遇到左括号[ 则保存count和循环长度st.push({count, result.size()});count = 0;} else if (isalpha(s[i])) { //遇到字母,追加到result中result += s[i];} else if (s[i] == ']') { //遇到右括号] 则开始扩展int count = st.top().first;int start_pos = st.top().second;// abcd start_pos=0, len=4int len = result.size() - start_pos;std::string extend_str = result.substr(start_pos, len); //注意这里只能扩展count-1次,因为result上已经记录过一次了for (int k = 0; k < count - 1; k++) {result += extend_str;}st.pop(); //每扩展完都需要弹出栈顶元素,考虑这种情况: 3[a2[c]]  st: (3,0), (2, 1)}}return result;}
};

http://www.yayakq.cn/news/76523/

相关文章:

  • 网站做百度联盟收入已经很低了搜索引擎优化方式
  • 做产品网站淘宝百度网页设计报告需求分析
  • 深圳做网站网络公司有哪些云南网官方网站
  • 潍坊品牌网站建设北京seo教师
  • 设计素材网站知乎做网站哪家公司专业
  • 北京网站策划服务网页翻译快捷键
  • 东莞公司网站做优化做虚假网站犯法吗
  • 厦门制作网站企业建设网站建设费用
  • 网站设计制作公司排名wordpress全站转移
  • 做一个网站得做多少个页面wordpress 推荐文章
  • 网页站点怎么命名单页关键词优化费用
  • 沈阳网站制作列表网北京网站建设方案软件
  • 教做甜点的网站电商网站建设策划方案
  • 常用的网站类型有哪些类型有哪些asp.net网站开发四酷全书
  • 合肥seo网站推广正规的南昌网站建设
  • 网站建设需求分析的功能网站建设的所有权
  • 旅游网站前端建设论文深圳高端别墅设计公司
  • 监控公司建设网站推广经营范围哪些平台可以发布产品
  • 网站建设及那个科目wordpress的文件权限设置
  • 网站建设实录音乐邯郸铸邯网络信息科技有限公
  • 网站建设的风格设置河南网站优化公司哪家好
  • 网站访客统计代码网站主页设计素材
  • wordpress 微商网站做书的封面网站
  • 装房和城乡建设部网站网络营销专业分析
  • 云南做网站价格苏州企业网站开发
  • 网站为什么要备案wordpress连接代码
  • 有没有做维修的网站全国最缺工100个职业排行出炉
  • 开发网站的语言北京市门户网站
  • 网站建设公司推荐乐云seo贵阳网站建开发
  • 爱站网是干什么的做电商网站前端用什么框架