Editorial for Chuyển hoá xâu


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence.

Spoiler Alert

(Lưu ý: Ở trong bài này mình sẽ đề cập tới 2 cách làm. Nếu bạn có cách nào ngoài 2 cách này, bạn có thể góp ý với mình)


Cách \(1\)

Với cách này, ta cần phải quan sát vào bảng mã \(ASCII\) để sử dụng cách \(1\) này.

  • Ta nhận thấy: chữ a thường trong bảng mã ASCII có mã là \(97\), còn chữ A hoa có mã là \(65\), cách nhau \(32\) mã. Đối với ký tự thường và ký tự hoa còn lại trong bảng chữ cái cũng vậy.

Vậy ta có kết luận: Để đổi chữ hoa sang chữ thường, thì ta chỉ cần lấy ký tự hoa cộng với \(32\), và ngược lại.

Vì vậy, ta có được hướng làm của cách \(1\):

  • Ta duyệt qua toàn xâu (chạy \(i\) từ \(0\) đến \(s.size()−1\)):
    • Nếu như ký tự \(i\) là nguyên âm thường thì ta sẽ trừ ký tự cho \(32\).
    • Nếu như ký tự \(i\) là nguyên âm hoa và phụ âm thường thì ta vẫn giữ nguyên.
    • Nếu như ký tự \(i\) là phụ âm hoa thì ta sẽ cộng ký tự với \(32\).

Cách \(2\)

Với cách này, ta sử dụng hàm đổi chữ hoa thành chữ thường.

  • Với cách này, ta cũng duyệt qua toàn xâu:
    • Nếu như ký tự \(i\)nguyên âm thường, ta chỉ in ra nguyên âm hoa, còn nguyên âm hoa thì ta giữ nguyên.
    • Nếu như ký tự \(i\)phụ âm hoa, ta sử dụng hàm std::transform(s.begin(), s.end(),s.begin(),::tolower) để đổi chữ hoa sang chữ thường, sau đó in ra ký tự đã đổi.
    • Nếu như ký tự \(i\)phụ âm thường, thì ta vẫn giữ nguyên.

\(Accepted\) \(Code\)

(Chỉ dùng để tham khảo, vui lòng không chép. Đó là sự tôn trọng chính đáng dành cho người viết editorial)


Code tại đây



Comments

There are no comments at the moment.