Đảo ngược từng từ trong câu bằng JavaScript

Đả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


Đảo ngược từng từ trong câu bằng JavaScript
Sonya Moisset

🛡️ 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