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() {
}
目录
相关文章
|
2月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
34 6
|
3天前
|
JSON JavaScript 前端开发
Golang深入浅出之-Go语言JSON处理:编码与解码实战
【4月更文挑战第26天】本文探讨了Go语言中处理JSON的常见问题及解决策略。通过`json.Marshal`和`json.Unmarshal`进行编码和解码,同时指出结构体标签、时间处理、omitempty使用及数组/切片区别等易错点。建议正确使用结构体标签,自定义处理`time.Time`,明智选择omitempty,并理解数组与切片差异。文中提供基础示例及时间类型处理的实战代码,帮助读者掌握JSON操作。
16 1
Golang深入浅出之-Go语言JSON处理:编码与解码实战
|
9天前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
22 0
|
14天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
24 1
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
17天前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
2月前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
17 0
|
2月前
|
机器学习/深度学习 NoSQL Shell
力扣刷题-翻转字符串
力扣刷题-翻转字符串
12 1
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
23 0
|
2月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8

热门文章

最新文章