Go_leetcode-3

Question:

  • Description :在给定字符串中,找出最长的无重复子串,并返回其长度。
  • Limitation :
  • Difficulty :
    • easy
    • medium
    • hard

Solution.

Details :

  • 我的算法运行时间368ms,但和之前看到过的4ms的代码采用了相同的算法,都是“i++,判断s[0,i)是否含有重复字符”。
    只是在具体的实现过程中,我采用了map[uint8]int结构用来保存s[0,i),当时为了图方便(可以使用v,ok := map[s[i]];ok快速判断);也想到过用slice优化(毕竟map的value没用到,还想到了使用strings.Contains()判断)。
    但还是略逊一筹:4ms的示例代码采用int[128]保存不重复的字符;今天更是发现了一个很新颖的处理方式:
cstr += fmt.Sprintf("%s", string(i))

结果显示,该算法使用存储6.1M,是已提交的所有Go实现中最少的。

Summary :

  • index, rune := range s使用range遍历字符串,只使用一个左值得到的是索引(或者说是字符串中的字符下标?),使用两个左值依次可以得到索引和rune类型字符

猜你喜欢

转载自blog.csdn.net/a982254249/article/details/86301063
今日推荐