Đả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 có thể yêu cầu bạn viết các cách khác nhau để đảo ngược chuỗi hoặc họ có thể yêu cầu bạn đảo ngược chuỗi mà không sử dụng các phương thức có sẵn hoặc thậm chí họ có thể yêu cầu bạn đảo ngược chuỗi bằng cách sử dụng đệ quy
Có khả năng có hàng chục cách khác nhau để làm điều đó, ngoại trừ chức năng đảo ngược tích hợp sẵn, vì JavaScript không có.
Dưới đây là ba cách thú vị nhất của tôi để giải quyết vấn đề đảo ngược chuỗi trong JavaScript. Lưu ý rằng bài viết này dựa trên FreeCodeCamp Basic Algorithm Scripting “Reverse a String”
Đây là một Scrim tương tác chỉ ra cách đảo ngược một chuỗi trong JavaScript
Thử thách thuật toán
Đảo ngược chuỗi được cung cấp
Bạn có thể cần biến chuỗi thành một mảng trước khi có thể đảo ngược nó
Kết quả của bạn phải là một chuỗi
function reverseString[str] {
return str;
}
reverseString["hello"];
Các trường hợp thử nghiệm được cung cấp
- reverseString[“hello”] sẽ trở thành “olleh”
- reverseString[“Howdy”] sẽ trở thành “ydwoH”
- reverseString[“Lời chào từ Trái đất”] sẽ trả về”htraE morf sgniteerG”
1. Đảo ngược một chuỗi với các chức năng tích hợp
Đối với giải pháp này, chúng tôi sẽ sử dụng ba phương pháp. chuỗi. nguyên mẫu. phương thức split[], Array. nguyên mẫu. phương thức đảo ngược [] và Mảng. nguyên mẫu. phương thức tham gia []
- Phương thức split[] tách một đối tượng Chuỗi thành một mảng chuỗi bằng cách tách chuỗi thành các chuỗi con
- Phương thức reverse[] đảo ngược một mảng tại chỗ. Phần tử mảng đầu tiên trở thành phần tử cuối cùng và phần tử cuối cùng trở thành phần tử đầu tiên
- Phương thức join[] nối tất cả các phần tử của một mảng thành một chuỗi
function reverseString[str] {
// Step 1. Use the split[] method to return a new array
var splitString = str.split[""]; // var splitString = "hello".split[""];
// ["h", "e", "l", "l", "o"]
// Step 2. Use the reverse[] method to reverse the new created array
var reverseArray = splitString.reverse[]; // var reverseArray = ["h", "e", "l", "l", "o"].reverse[];
// ["o", "l", "l", "e", "h"]
// Step 3. Use the join[] method to join all elements of the array into a string
var joinArray = reverseArray.join[""]; // var joinArray = ["o", "l", "l", "e", "h"].join[""];
// "olleh"
//Step 4. Return the reversed string
return joinArray; // "olleh"
}
reverseString["hello"];
Xâu chuỗi ba phương thức lại với nhau
function reverseString[str] {
return str.split[""].reverse[].join[""];
}
reverseString["hello"];
2. Đảo ngược chuỗi với vòng lặp giảm dần
function reverseString[str] {
// Step 1. Create an empty string that will host the new created string
var newString = "";
// Step 2. Create the FOR loop
/* The starting point of the loop will be [str.length - 1] which corresponds to the
last character of the string, "o"
As long as i is greater than or equals 0, the loop will go on
We decrement i after each iteration */
for [var i = str.length - 1; i >= 0; i--] {
newString += str[i]; // or newString = newString + str[i];
}
/* Here hello's length equals 5
For each iteration: i = str.length - 1 and newString = newString + str[i]
First iteration: i = 5 - 1 = 4, newString = "" + "o" = "o"
Second iteration: i = 4 - 1 = 3, newString = "o" + "l" = "ol"
Third iteration: i = 3 - 1 = 2, newString = "ol" + "l" = "oll"
Fourth iteration: i = 2 - 1 = 1, newString = "oll" + "e" = "olle"
Fifth iteration: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh"
End of the FOR Loop*/
// Step 3. Return the reversed string
return newString; // "olleh"
}
reverseString['hello'];
không có bình luận
function reverseString[str] {
var newString = "";
for [var i = str.length - 1; i >= 0; i--] {
newString += str[i];
}
return newString;
}
reverseString['hello'];
3. Đảo ngược một chuỗi với đệ quy
Đối với giải pháp này, chúng tôi sẽ sử dụng hai phương pháp. chuỗi. nguyên mẫu. phương thức substr[] và String. nguyên mẫu. phương thức 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ố lượng ký tự đã 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 của đệ quy bằng với độ 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ẽ rất chậm nếu Chuỗi rất dài và kích thước ngăn xếp là mối quan tâm chính
function reverseString[str] {
if [str === ""] // This is the terminal case that will end the recursion
return "";
else
return reverseString[str.substr[1]] + str.charAt[0];
/*
First Part of the recursion method
You need to remember that you won’t have just one call, you’ll have several nested calls
Each call: str === "?" reverseString[str.subst[1]] + str.charAt[0]
1st call – reverseString["Hello"] will return reverseString["ello"] + "h"
2nd call – reverseString["ello"] will return reverseString["llo"] + "e"
3rd call – reverseString["llo"] will return reverseString["lo"] + "l"
4th call – reverseString["lo"] will return reverseString["o"] + "l"
5th call – reverseString["o"] will return reverseString[""] + "o"
Second part of the recursion method
The method hits the if condition and the most highly nested call returns immediately
5th call will return reverseString[""] + "o" = "o"
4th call will return reverseString["o"] + "l" = "o" + "l"
3rd call will return reverseString["lo"] + "l" = "o" + "l" + "l"
2nd call will return reverserString["llo"] + "e" = "o" + "l" + "l" + "e"
1st call will return reverserString["ello"] + "h" = "o" + "l" + "l" + "e" + "h"
*/
}
reverseString["hello"];
không có bình luận
________số 8_______Toán tử có điều kiện [Tternary]
function reverseString[str] {
return [str === ''] ? '' : reverseString[str.substr[1]] + str.charAt[0];
}
reverseString["hello"];
Đảo ngược chuỗi trong JavaScript là một thuật toán nhỏ và đơn giản có thể được hỏi khi sàng lọc kỹ thuật qua điện thoại hoặc phỏng vấn kỹ thuật. Bạn có thể đi theo con đường ngắn để giải quyết vấn đề này hoặc thực hiện phương pháp bằng cách giải quyết nó bằng đệ quy hoặc thậm chí các giải pháp phức tạp hơn
Tôi hy vọng bạn tìm thấy điều này hữu ích. Đây là một phần trong loạt bài viết “Cách giải quyết các thuật toán FCC” của tôi về Các thách thức về thuật toán của Free Code Camp, nơi tôi đề xuất một số giải pháp và giải thích từng bước những gì xảy ra bên trong.
Ba cách để lặp lại một chuỗi trong JavaScript
Trong bài viết này, tôi sẽ giải thích cách giải quyết thử thách “Lặp lại một chuỗi lặp lại một chuỗi” của freeCodeCamp. Điều này liên quan đến…
Hai cách để xác nhận kết thúc của Chuỗi trong JavaScript
Trong bài viết này, tôi sẽ giải thích cách giải quyết thử thách “Xác nhận kết thúc” của freeCodeCamp
Ba cách để thừa số hóa một số trong JavaScript
Bài viết này dựa trên Free Code Camp Basic Algorithm Scripting “Factorialize a Number”
Hai cách để kiểm tra Palindromes trong JavaScript
Bài viết này dựa trên Free Code Camp Basic Algorithm Scripting “Check for Palindromes”
Ba cách để tìm từ dài nhất trong chuỗi trong JavaScript
Bài viết này dựa trên Kịch bản thuật toán cơ bản của Free Code Camp “Tìm từ dài nhất trong một chuỗi”
Ba cách đặt tiêu đề cho một câu trong JavaScript
Bài viết này dựa trên Free Code Camp Basic Algorithm Scripting “Tiêu đề trường hợp một câu”
Nếu bạn có giải pháp của riêng mình hoặc bất kỳ đề xuất nào, hãy chia sẻ chúng bên dưới trong phần bình luận
Hoặc bạn có thể theo dõi tôi trên Medium, Twitter, Github và LinkedIn, ngay sau khi bạn nhấp vào trái tim màu xanh bên dưới ;-]
#StayCurious, #KeepOnHacking & #MakeItHappen
Tài nguyên
- phương thức split[] — MDN
- phương thức đảo ngược [] — MDN
- phương thức tham gia [] — MDN
- Chuỗi. chiều dài — MDN
- phương thức substr[] — MDN
- phương thức charAt[] — MDN
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
🛡️ Làm công việc An ninh mạng. 🌟 Ngôi sao GitHub. 💻 Những người phụ nữ tuyệt vời trong không gian mạng/công nghệ. 👩🎤 Đại sứ GirlCode. 🥑 DevSecOps/Người ủng hộ bảo mật đám mây
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có việc làm với tư cách là nhà phát triển. Bắt đầu