- vừa được xem lúc

Leetcode problem #1: Find longest substring without repeating characters

0 0 17

Người đăng: hậu nguyễn

Theo Viblo Asia

Problem statement

For a given input string, return length of the longest substring in the given string without repeating characters. Note: the given string includes English letters and digits.

Examples:

Example1:

**Input:** s = "abcabcbb"
**Output: ** 3 (with the substring "abc")

Example 2:

**Input: ** s = "bbbbb"
**Output: ** 1

Example 3:

**Input: ** s = "pwwkew"
**Output: ** 3 (with the substring "kew")

Solution 1: Naive approach

We are using the naive approach by check every possible substring of the given string s and return the length of the longest string without repeating characters. We should follow these steps:

  1. Generate all possible substrings of s by using two loops
  2. When you obtain each substring, use a map to check whether there are any repeated character in this substring. If not, compare its length with length of all unique character substrings so far. If the substring has at least repeated characters, skip it.

Code example

func FindLongestSubstring(s string) int { n := len(s) if n == 1 { return 1 } duplicateMap := make(map[string]bool) // to store characters of the substring isDuplicate := false // true is there are any duplicated character in the substring, false if not maxLength := 0 // store length of the longest unique character substring for i := 0; i < n-1; i++ { for j := i; j < n; j++ { duplicateMap = make(map[string]bool) isDuplicate = false for k := i; k <= j; k++ { if _, found := duplicateMap[string(s[k])]; !found { duplicateMap[string(s[k])] = true continue } isDuplicate = true break } if !isDuplicate { maxLength = int(math.Max(float64(maxLength), float64(j-i+1))) } } } return maxLength
}

Bình luận

Bài viết tương tự

- vừa được xem lúc

Lập trình và tư duy thuật toán sáng tạo (Kì 2) - Tóm lược kiến thức đại số tổ hợp

Trong phần đầu Lập trình và tư duy thuật toán sáng tạo (Kì 1) Mình đã giới thiệu về khái niệm, lý do bạn cần sử dụng thuật toán và những điều cơ bản đề giải quyết một bài toán. Và giờ thì chúng ta bắt đầu tìm hiểu xem thế giới "diệu kỳ" này có gì nhé.

0 0 174

- vừa được xem lúc

Process (Máy tính) và những điều có thể chưa biết - Phần II - Multitasking

Tiếp nối phần I mình đã tìm hiểu Process như thế nào, các component của 1 Process, và cách Process hoạt động. Phần tiếp theo này chúng ta cùng xem liệu Multitasking có phải là bến đỗ hạnh phúc khi muốn optimize thời gian chạy của 1 chương trình.

0 0 5.2k

- vừa được xem lúc

Process (Máy tính) và những điều có thể chưa biết - Phần I

Chào anh em một buổi sáng đầy năng lượng. Lý do mình viết bài chia sẻ này vì có 2 vấn đề mình thấy rất nhiều bạn gặp phải.

0 0 161

- vừa được xem lúc

Tìm hiểu khái niệm Hash Table

Có lẽ khái niệm này cũng không quá xa lạ gì với các anh em Engineer và bản thân mình sau 2 năm đầu đi làm và lần đầu tiên nghe về khái niệm này cũng hiểu một cách rất là mơ hồ . Yeah và dĩ nhiên không để nỗi đau thêm dài (thật ra mình tò mò là chính) nên mình cũng tìm hiểu về cách làm việc của Hash

0 0 134

- vừa được xem lúc

Thuật toán Apriori khai phá luật kết hợp trong Data Mining

Bài toán khai thác tập phổ biến (frequent itemset) là bài toán rất quan trọng trong lĩnh vực data mining. Bài toán khai thác tập phổ biến là bài toán tìm tất cả tập các hạng mục (itemset) S có độ phổ

0 0 506

- vừa được xem lúc

Series Data structures and algorithms

Giới thiệu. Xin chào các bạn. Tổng quan. Hàng ngày, chúng ta vẫn thường xuyên sử dụng các cấu trúc dữ liệu như Array,Map.

0 0 139