ARTS 第5周

陈卧虫 · · 866 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

ARTS 第4周分享

[TOC]

Algorithm

1021. Remove Outermost Parentheses

难度:[easy]

[思路]

  1. 先解析成最原始的括号
    • 遍历这个字符串, 用一个int变量flag标记是否匹配成一个原始括号:如果为左括号,flag加1;如果为右括号,flag减1;如果flag为零,则匹配成一个原始括号
    • 用一个切片[]byte存储遍历的每一个字符,直到flag为0时,将这个切片存入另一个[][]byte切片中
  2. 再删除最外层的括号
    • 遍历这个切片[][]byte, 将其中每一个[]byte切片进行[:],然后拼接成一个整体

[参考代码]

func removeOuterParentheses(S string) string {
    flag := 0
    tempByteS := make([]int32, 0)
    primitiveS := make([][]int32, 0)
    for _, v := range S {
        tempByteS = append(tempByteS, v)
        if string(v) == "(" {
            flag++
        } else {
            flag--
        }
        if flag == 0 {
            fmt.Println(string(tempByteS))
            primitiveS = append(primitiveS, tempByteS)
            tempByteS = make([]int32, 0)
        }
    }

    resultS := make([]int32, 0)
    for _, v := range primitiveS {
        fmt.Println("before split: ",string(v))
        lens := len(v) - 1
        fmt.Println("split: ",string(v[1:lens]))
        resultS = append(resultS, v[1:lens]...)
    }

Review

深入研究golang的类型系统:https://medium.com/@ankur_anand/a-closer-look-at-go-golang-type-system-3058a51d1615

主要讲的是go语言的类型系统,讲的很透彻,列举了go类型使用时需要注意的一些问题,觉得很好,就把他翻译了一遍:

译文链接:https://www.jianshu.com/p/ce307b8e9772

Tips

由于最近和同时代码冲突的次数比较多,导致分支有很多合并记录,仔细研究了一下解决方式。原来在git中 有一个 git rebase命令。仔细一番以后最后写了两篇小文章,下面是文章链接:

git rebase的一点理解:https://www.jianshu.com/p/39c45f990c99

Git rebase使用:https://www.jianshu.com/p/f7ed3dd0d2d8

Share

Go语言实战笔记(二十七)| Go unsafe Pointer:https://www.flysnow.org/2017/07/06/go-in-action-unsafe-pointer.html

go语言unsafe Pointer的简单介绍与使用:

  • 为了安全考虑,Go语言不允许两个指针类型进行转换
  • 如果需要强制转换,需要使用unsafe包的Pointer
  • unsafe.Pointer是一种特殊意义的指针,它可以包含任意地址
  • unsafe.Pointer使用的4个规则:
    • 任意类型的指针都可以转换成unsafe.Pointer
    • unsafe.Pointer也可以转换成任意类型的指针
    • uintptr可以转换为unsafe.Pointer
    • unsafe.Pointer也可以转换为uintptr
  • uintptr可以进行偏移量计算,可以通过uintptr来计算内存偏移
  • unsafe用于编译器,在编译时go语言已经将这些运算处理好
  • unsafe不安全,尽量少使用

本周阅读

周:1,2,3,4,5,6
缓冲信道和工作池(Buffered Channels and Worker Pools):https://studygolang.com/articles/12512

深入理解 fmt 包:https://studygolang.com/articles/17400

Go语言高阶:调度器系列(1)起源:https://mp.weixin.qq.com/s/p7sqYBUZngMfU3xXf9TNWA

一个 Git 分支协作模式的进化故事:https://mp.weixin.qq.com/s/7A5bIMCDUk8VvFcXi8l49w

深入理解go类型系统:https://medium.com/@ankur_anand/a-closer-look-at-go-golang-type-system-3058a51d1615

Go语言实战笔记(二十七)| Go unsafe Pointer:https://www.flysnow.org/2017/07/06/go-in-action-unsafe-pointer.html

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:陈卧虫

查看原文:ARTS 第5周

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

866 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传