Hướng dẫn cho Chuyển hoá xâu


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Authors: dang7rickroll

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



Bình luận


  • 0
    spiderman    10:16 a.m. 3 Tháng 9, 2023

    code python:

    t=int(input())
    for _ in range(t):
        s=input()
        a=['u','e','o','a','i','U','E','O','A','I','U']
        p=''
        for i in s:
            if not i in a:
                p=p+i.lower()
            else:
                p=p+i.upper()
        print(p)
    


    • 0
      PY2GTranNguyenAnhKhoi    10:42 p.m. 13 Tháng 2, 2024

      q = int(input())
      for _ in range(q):
      s = input()
      for i in range(len(s)):
      if s[i] in ['a', 'A']:
      print('A', end='')
      elif s[i] in ['e', 'E']:
      print('E', end='')
      elif s[i] in ['o', 'O']:
      print('O', end='')
      elif s[i] in ['i', 'I']:
      print('I', end='')
      elif s[i] in ['u', 'U']:
      print('U', end='')
      else:
      print(s[i].lower(), end='')
      print()
      thế này có được gọi là if test ko vậy 🙂

      2 bình luận nữa