ARTS 打卡第三周

ARTS 打卡week03

在这里插入图片描述

每周完成一个 ARTS:
Algrithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章

Algrithm

3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例

# 示例1
输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

# 示例2
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

解析

unRepSubString.go

package leetCode

/*
** 解析:
** 判断一个字符串中最长无重复字符子串,可以通过滑动窗口实现
** 1.初始化窗口[]长度为1
** 2.窗口右边界向右移动,若该字符(假设a)在窗口中不存在,则窗口大小+1,左边界不动
** 3.若该字符在窗口中存在,分以下两种情况处理:
** a.若a在左边界右边(包括左边界),则左边界移动到a后面一个字符位置
** 4.若a在左边界的左边,则左边界不动,计算左右边界差值是否大于maxLen,是则替换
** 重复2 - 4
*/
func LengthOfLongestSubstring(s string) int {
	maxSubStr := make(map[uint8]int, 1)
	i, maxLen := 0, 0

	// 空字符串,特殊处理
	if s == "" {
		return 0
	}

	for index := range s {
		if n, ok := maxSubStr[s[index]] ; !ok {
			if maxLen < index - i + 1 {
				maxLen = index - i + 1
			}
		} else {
			if n >= i {
				i = maxSubStr[s[index]] + 1
			} else {
				if index - i + 1 > maxLen {
					maxLen = index - i + 1
				}
			}
		}
		maxSubStr[s[index]] = index
	}

	return maxLen
}

unRepSubString_test.go

package leetCode

import "testing"

func TestLengthOfLongestSubstring(t *testing.T) {
	s1, s2, s3, s4 := "", "abba", "abcabcbb", "tmmzuxt"

	t.Logf("the max len of sub string is [%d]", LengthOfLongestSubstring(s1))
    t.Logf("the max len of sub string is [%d]", LengthOfLongestSubstring(s2))
    t.Logf("the max len of sub string is [%d]", LengthOfLongestSubstring(s3))
    t.Logf("the max len of sub string is [%d]", LengthOfLongestSubstring(s4))
}
面试题64. 求1+2+…+n

1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

示例

# 示例1
输入: n = 3
输出: 6

# 示例2
输入: n = 9
输出: 45

解析

// 由题意可知可以通过递归实现
func sumNums(n int) int {
    if n == 1 {
        return 1
    }
    return sumNums(n-1) + n
}

Review

《If You Want To Be Rich, Stop Focusing On Your Salary (Do This Instead)》

说说我自己的经历吧,学习理财和时间也差不多有两年了。当初只是简单希望自己幸苦赚的钱不要贬值,以前余额宝的年化收益还有百分之三的样子,一万块钱一天大概有一块钱收益。现在已经丧心病狂地跌到一点五几了,每年CPI都差不多在二点几个百分比。也就是说你年初放在余额宝里面的一万,到年底实际价值已经没有一万了。如果把钱放在银行里面钱就更不值钱了。
为此自己学习了一些基金方面的理财知识,慢慢的从开始一个月100-200的收益,现在差不多一个月的收益平均在1600左右,虽然钱不是很多。也差不多把自己房租给抵消了。
今年因为疫情,目前处于离职在家待业的状态,正在安心复习准备面试。看网上很多人为此非常焦虑,我想多少是因为经济来源只有单一的工作导致的吧,所以我建议大家如果手上有==闲钱==,不要让他躺着,适当的投资或许会给你在某些特殊时刻带来一些助力。
基金相关的书我只看过一本《解读基金》,这里推荐给大家。

Tips

- golang for range 支持数组、切片、map、字符串和channel。
- 数组、切片、字符串返回索引和值;
- map 返回键和值;
- 通道(channel)只返回通道内的值;
- value, bool := map[key] map可以判断某个键值是否存在

Share

Redis 和 I/O 多路复用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值