golang力扣leetcode 394.字符串解码

简介: golang力扣leetcode 394.字符串解码

题解

  1. 非]直接入栈
  2. 遇到],存string,直到遇到[
  3. 弹出[,统计前面的重复次数
  4. 入栈第三步统计次数个的第二步的string

代码

package main
import "strconv"
func decodeString(s string) string {
  if len(s) == 0 {
    return ""
  }
  stack := make([]byte, 0, len(s))
  for i := 0; i < len(s); i++ {
    by := s[i]
    switch by {
    case ']':
      cnt := make([]byte, 0, len(s))
      //pop string
      for stack[len(stack)-1] != '[' {
        cnt = append(cnt, stack[len(stack)-1])
        stack = stack[:len(stack)-1]
      }
      //pop [
      stack = stack[:len(stack)-1]
      //pop count
      count := ""
      for len(stack) != 0 && stack[len(stack)-1] >= '0' && stack[len(stack)-1] <= '9' {
        count = count + string(stack[len(stack)-1])
        stack = stack[:len(stack)-1]
      }
      //reverse count for num
      num := 0
      for i := len(count) - 1; i >= 0; i-- {
        v, _ := strconv.Atoi(string(count[i]))
        num = num*10 + v
      }
      //insert string
      for i := 0; i < num; i++ {
        for j := len(cnt) - 1; j >= 0; j-- {
          stack = append(stack, cnt[j])
        }
      }
    default:
      stack = append(stack, by)
    }
  }
  return string(stack)
}
func main() {
}
目录
相关文章
|
3月前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
41 1
|
3月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
32 9
|
3月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
3月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
107 0
|
3月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
35 0
|
3月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
64 0
|
3月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
25 0
|
4月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
152 4
Golang语言之管道channel快速入门篇
|
4月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
76 4
Golang语言文件操作快速入门篇
|
4月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
125 3
Golang语言之gRPC程序设计示例