每日一题---3. 无重复字符的最长子串[力扣][Go]

简介: 每日一题---3. 无重复字符的最长子串[力扣][Go]

题目描述

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

代码

func lengthOfLongestSubstring(s string) int {
  // 判断非空
  if s == "" {
    return 0
  }
  max := 1    // 记录最大次数
  afterIndex := 1   // 利用切片,需要后面下标
  frontIndex := 0   // 利用切片,需要前面下标
  for frontIndex < len(s)  {
    for afterIndex < len(s){
      // 字符不存在则加一,否则退出两下标都加一
      if isHaveChar(s[frontIndex:afterIndex],s[afterIndex]) {
        break
      } else {
        afterIndex++
      }
    }
    if max < afterIndex - frontIndex { // 判断本次的长度和最大长度内个长
      max = afterIndex - frontIndex
    }
    frontIndex ++
  }
  return max
}
// 判断字符串中是否有特定字符
func isHaveChar(s string,n uint8 ) bool {
  for _, i := range s {
    if uint8(i) == n{
      return true
    }
  }
  return false
}

测试结果


相关文章
|
6月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
59 6
|
6月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
44 8
每日一题 --- 942. 增减字符串匹配[力扣][Go]
每日一题 --- 942. 增减字符串匹配[力扣][Go]
每日一题 --- 942. 增减字符串匹配[力扣][Go]
|
算法 Go
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 933. 最近的请求次数[力扣][Go]
每日一题 --- 933. 最近的请求次数[力扣][Go]
每日一题 --- 933. 最近的请求次数[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
|
Go 索引
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
|
存储 测试技术 Go
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]