---
# System prepended metadata

title: 1704. Determine if String Halves Are Alike

---

# [1704. Determine if String Halves Are Alike](https://leetcode.com/problems/determine-if-string-halves-are-alike/description/?envType=daily-question&envId=2024-01-12)

# 1. Tóm tắt đề bài

Cho một xâu gồm số chẵn các ký tự. Ta cắt xâu này thành hai nửa có số ký tự bằng nhau. Hỏi, xâu nửa đầu và xâu nửa cuối có *tương tự* nhau không?

Hai xâu được coi là **tương tự** nhau nếu như số ký tự nguyên âm ở hai xâu này bằng nhau.

### Giới hạn

$1 \le n \le 1000$
Các ký tự có thể là cả hoa hoặc thường.

# 2. Tóm tắt lời giải

**Độ phức tạp dự tính: $O(n)$**

Đề bài bảo thế nào ta làm đúng thế. Đây không phải một bài cần nhiều ý tưởng.

# 3. Lời giải chi tiết

Ta có thể dùng hàm `substr` trong C++ để lấy nửa đầu và nửa cuối của hai xâu.

Sau đó, viết một hàm `count_vowels` để đếm xem với mỗi xâu, có xuất hiện bao nhiêu nguyên âm.

Ta có thể lưu các nguyên âm vào các cấu trúc tập hợp (`set`) hoặc một array để tra cứu. Tùy lựa chọn mỗi người.

### Độ phức tạp thuật toán

Thời gian: $O(n)$.
Bộ nhớ mở rộng: $O(1)$

Code mẫu: https://leetcode.com/problems/determine-if-string-halves-are-alike/submissions/1143813076/?envType=daily-question&envId=2024-01-12




