给定一个字符串式子,返回它的计算结果。算术 规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g.  s = "3*[a2*[c]]", 返回 “accaccacc”-笔试面试资料

这是qklbishe.com第7277 篇笔试面试资料
提供答案分析,通过本文《给定一个字符串式子,返回它的计算结果。算术 规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g.  s = "3*[a2*[c]]", 返回 “accaccacc”-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
给定一个字符串式子,返回它的计算结果。算术规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g. s = "3*[a2*[c]]", 返回 “accaccacc”

给定一个字符串式子,返回它的计算结果。算术 规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g.  s = "3*[a2*[c]]", 返回 “accaccacc” 区块链毕设学生739524201号
#

# @param str string字符串 
# @return string字符串
#
class Solution(object):
    def computeString(self, s):
        stack = []
        num = 0
        res = ""
        for i in s:
            if i.isdigit():
                num = num * 10 + int(i)
            elif i == ‘*’:
                continue
            elif i == "[":
                stack.append((res, num))
                res, num = "", 0
            elif i == "]":
                top = stack.pop()
                res = top[0] + res * top[1]
            else:
                res += i
        return res.strip(‘*’)

今天 17:18:03 回复(0)
给定一个字符串式子,返回它的计算结果。算术 规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g.  s = "3*[a2*[c]]", 返回 “accaccacc” 甘毅辉
class Solution { public:     /**      *       * @param str string字符串       * @return string字符串      */     // 0   数字     // 1   *     // 2   【】     // 3   字母     int state = 0;     string computeString(string str) {         // write code here         stack<int> shuzi;         stack<char> chenghao;         stack<char> kuohao;         stack<string> zimu;                  for (int i = 0; i < str.size(); ++i) {             if (str[i] <= '9' && str[i] >= '0') {                 if (state == 0 && !shuzi.empty()) {                     int t = shuzi.top();                     shuzi.pop();                     t = t * 10 + str[i] - '0';                     shuzi.push(t);                 }                 else {                     shuzi.push(str[i] - '0');                 }                 state = 0;             }             else if (str[i] == '*') {                 state = 1;                 chenghao.push(str[i]);             }             else if (str[i] <= 'z' && str[i] >= 'a') {                 if (state == 3 && !zimu.empty()) {                     string t = zimu.top();                     zimu.pop();                     t = t + str[i];                     zimu.push(t);                 }                 else {                     string t = "";                     t += str[i];                     zimu.push(t);                 }                 state = 3;             }             else if (str[i] == '[') {                 kuohao.push(str[i]);                 state = 2;             }             else if (str[i] == ']') {                 kuohao.pop();                 chenghao.pop();                 int t = shuzi.top();                 string s = zimu.top();                 string res = "";                 shuzi.pop();                 zimu.pop();                 for (int i = 0; i < t; ++i) {                     res += s;                 }                 if (zimu.empty()) zimu.push(res);                 else {                     string t = zimu.top();                     zimu.pop();                     t += res;                     zimu.push(t);                 }             }         }         return zimu.top();     } };
定义几个栈。
记录状态就好了。如果上一次状态是字母,这一次还是,就和字母栈顶层合并。数字也是同样的操作。

今天 15:25:46 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个字符串式子,返回它的计算结果。算术 规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g.  s = "3*[a2*[c]]", 返回 “accaccacc”-笔试面试资料

提供最优质的资源集合

立即查看 了解详情