Share 3. longest substring without repeating characters c++,

huyhoanglyai

New member
#Chất nền dài nhất mà không cần lặp lại các ký tự, #C ++, #String, #algorithms, #data Structures ## Chất phụ dài nhất mà không cần lặp lại các ký tự trong C ++

Đưa ra một chuỗi, hãy tìm chuỗi con dài nhất không chứa bất kỳ ký tự lặp lại nào.

**Ví dụ:**

`` `
Đầu vào: "ABCABCBB"
Đầu ra: "ABC"
`` `

**Giải trình:**

Chất nền dài nhất mà không cần lặp lại các ký tự là "ABC".

** Thuật toán: **

1. Tạo bản đồ băm để lưu trữ các ký tự trong chuỗi và vị trí của chúng.
2. Khởi tạo hai con trỏ, `i` và` j`, để chỉ vào đầu chuỗi.
3. Trong khi `j` nhỏ hơn chiều dài của chuỗi:
* Kiểm tra xem ký tự ở vị trí `j` có trong bản đồ băm không.
* Nếu có, hãy di chuyển `Tôi đến vị trí sau ký tự trong bản đồ băm.
* Nếu không, hãy cập nhật bản đồ băm và di chuyển `j` sang vị trí tiếp theo.
4. Chất nền dài nhất mà không cần lặp lại các ký tự là chuỗi con từ `i` đến` j`.

**Thực hiện:**

`` `C ++
#include <Istream>
#include <Nemedered_map>

sử dụng không gian tên STD;

int main () {
Chuỗi s = "ABCABCBB";

// Tạo bản đồ băm để lưu trữ các ký tự trong chuỗi và vị trí của chúng.
Unordered_map <char, int> char_map;

// Khởi tạo hai con trỏ, I và J, để chỉ vào đầu chuỗi.
int i = 0, j = 0;

// Trong khi J nhỏ hơn chiều dài của chuỗi:
while (j <s.length ()) {
// Kiểm tra xem ký tự ở vị trí J nằm trong bản đồ băm.
if (char_map.find (s [j])! = char_map.end ()) {
// Nếu có, hãy di chuyển i đến vị trí sau ký tự trong bản đồ băm.
i = char_map [s [j]] + 1;
}
// Nếu không, hãy cập nhật bản đồ băm và di chuyển J sang vị trí tiếp theo.
khác {
char_map [s [j]] = j;
J ++;
}
}

// Chất nền dài nhất mà không cần lặp lại các ký tự là phần phụ từ I đến j.
cout << s.substr (i, j - i) << endl;

trả lại 0;
}
`` `

## Người giới thiệu

* [Chất nền dài nhất mà không cần lặp lại các ký tự] (Longest Substring Without Repeating Characters - LeetCode)
* [C ++ Chất nền dài nhất mà không cần lặp lại các ký tự] (https://www.programiz.com/cpp-programming/examples/Longest-SubString-Without-Prepeating-characters)
=======================================
# Longest Substring Without Repeating Characters, #C++, #String, #algorithms, #data Structures ## Longest Substring Without Repeating Characters in C++

Given a string, find the longest substring that doesn't contain any repeating characters.

**Example:**

```
Input: "abcabcbb"
Output: "abc"
```

**Explanation:**

The longest substring without repeating characters is "abc".

**Algorithm:**

1. Create a hash map to store the characters in the string and their positions.
2. Initialize two pointers, `i` and `j`, to point to the beginning of the string.
3. While `j` is less than the length of the string:
* Check if the character at position `j` is in the hash map.
* If it is, move `i` to the position after the character in the hash map.
* Otherwise, update the hash map and move `j` to the next position.
4. The longest substring without repeating characters is the substring from `i` to `j`.

**Implementation:**

```c++
#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
string s = "abcabcbb";

// Create a hash map to store the characters in the string and their positions.
unordered_map<char, int> char_map;

// Initialize two pointers, i and j, to point to the beginning of the string.
int i = 0, j = 0;

// While j is less than the length of the string:
while (j < s.length()) {
// Check if the character at position j is in the hash map.
if (char_map.find(s[j]) != char_map.end()) {
// If it is, move i to the position after the character in the hash map.
i = char_map[s[j]] + 1;
}
// Otherwise, update the hash map and move j to the next position.
else {
char_map[s[j]] = j;
j++;
}
}

// The longest substring without repeating characters is the substring from i to j.
cout << s.substr(i, j - i) << endl;

return 0;
}
```

## References

* [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/)
* [C++ Longest Substring Without Repeating Characters](https://www.programiz.com/cpp-programming/examples/longest-substring-without-repeating-characters)
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top