Đảo ngược chuỗi là một trong những câu hỏi Javascript thường gặp nhất trong vòng phỏng vấn kỹ thuật. Người phỏng vấn sẽ hỏi bạn các cách viết khác nhau để đảo ngược 1 chuỗi, hoặc họ có thể hỏi bạn đảo ngược 1 chuỗi mà không được sử dụng các phương thức đã được xây dựng sẵn, hoặc thậm chí họ có thể yêu cầu bạn đảo ngược 1 chuỗi bằng cách sử dụng đệ quy.

có thể có hàng chục cách khác nhau để thực hiện điều đấy, ngoại trừ các hàm đảo ngược được xây dựng sẵn,vì Javascript không có.

Dưới đây là 3 cách rất hay để giải quyết vấn đề đảo ngược 1 chuỗi trong Javascript


Thách thức của thuật toán

Để có thể đảo ngược 1 chuỗi bạn phải biến chuỗi đó thành 1 mảng trước khi đảo ngược nó, sau đó kết quả cuối cùng của bạn phải là 1 chuỗi

Trường hợp kiểm tra cụ thể như sau

  • reverseString(“hello”) kết quả là: “olleh”
  • reverseString(“Howdy”) kết quả là: “ydwoH”
  • reverseString(“Greetings from Earth”) kết quả là:”htraE morf sgniteerG”

1. Đảo ngược chuỗi với các phương thức có sẵn trong Javascript

Đối với giải pháp này, chúng ta sẽ sử dụng 3 phương thức: String.prototype.split() , Array.prototype.reverse(), Array.prototype.join() method.

  • Phương thức split() là phương thức tách 1 chuỗi thành 1 mảng các phần tử, bằng cách tách chuỗi thành các chuỗi con.
  • Phương thức reverse() đảo ngược 1 mảng tại chỗ. Phần tử mảng đầu tiên trở thành cuối cùng và cuối cùng sẽ thành phần tử đầu tiên.
  • Phương thức join() là phương thức nối tất cả các phần tử của mảng lại thành 1 chuỗi

 

 

 

 

 

 

 

         Ta có thể gói gọn code bằng cách gộp lại 3 phương thức trên như sau:

 

 

 

2. Đảo ngược 1 chuỗi bằng cách sử dụng vòng lặp

 

 

 

 

 

 

 

 

 

 

3. Đảo ngược 1 chuỗi bằng đệ quy

Đối với giải pháp này chúng ta sử dụng 2 phương thức: phương thức String.prototype.substr () và phương thức String.prototype.charAt ().

  • Phương thức substr () trả về các ký tự trong một chuỗi bắt đầu tại vị trí đã chỉ định thông qua số ký tự được chỉ định.
"hello".substr(1); // "ello"
  • Phương thức charAt () trả về ký tự được chỉ định từ một chuỗi.
"hello".charAt(0); // "h"

 

 

 

 

 

 

 

 

 

 

 

 

         

Độ sâu đệ quy bằng với chiều dài của chuỗi. Giải pháp này không phải là giải pháp tốt nhất và sẽ thực sự chậm nếu Chuỗi là rất dài và kích thước ngăn xếp là mối quan tâm lớn.

Rút gọn code bằng cách sử dụng toán tử có điều kiện:

 

 

 

 

Kết luận:

Đảo ngược một chuỗi trong JavaScript là một thuật toán nhỏ và đơn giản có thể được yêu cầu trên một màn hình điện thoại kỹ thuật hoặc một cuộc phỏng vấn kỹ thuật. Bạn có thể đi theo con đường ngắn trong việc giải quyết vấn đề này, hoặc tiếp cận bằng cách giải quyết nó bằng đệ quy hoặc các giải pháp phức tạp hơn.

Nguồn bài viết: medium.freecodecamp.org