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)
Đư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)