Bài 58 Leetcode: Length of Last Word

Đề bài:

Cho một chuỗi s gồm các từ và khoảng trắng, trả về độ dài của từ cuối cùng trong chuỗi.

Một từ là một chuỗi con tối đa chỉ gồm các ký tự không phải khoảng trắng.

Ví dụ 1:

Input: s = "Hello World"
Output: 5
Giải thích: Từ cuối cùng là "World" có độ dài là 5.

Ví dụ 2:

Input: s = "   fly me   to   the moon  "
Output: 4
Giải thích: Từ cuối cùng là "moon" có độ dài là 4.

Ví dụ 3:

Input: s = "luffy is still joyboy"
Output: 6
Giải thích: Từ cuối cùng là "joyboy" có độ dài là 6.

Ràng buộc:

  • 1 <= độ dài của s <= 104
  • s chỉ chứa các chữ cái tiếng Anh và khoảng trắng ‘ ‘.
  • Sẽ có ít nhất một từ trong s.

Giải thích thuật toán bằng C ++

class Solution {
 public:
  int lengthOfLastWord(string s) {
    int i = s.length() - 1;

    while (i >= 0 && s[i] == ' ')
      --i;
    const int lastIndex = i;
    while (i >= 0 && s[i] != ' ')
      --i;

    return lastIndex - i;
  }
};

Đoạn mã trên là một phương thức trong lớp `Solution` được viết bằng ngôn ngữ C++ để tính độ dài của từ cuối cùng trong một chuỗi.

Phương thức `lengthOfLastWord` nhận đầu vào là một chuỗi `s`. Nó trả về độ dài của từ cuối cùng trong chuỗi.

Đầu tiên, biến `i` được gán giá trị là độ dài của chuỗi `s` trừ 1. Điều này cho phép ta bắt đầu từ vị trí cuối cùng của chuỗi.

Trong vòng lặp while đầu tiên, ta đi qua các khoảng trắng ở cuối chuỗi bằng cách giảm giá trị của `i` cho đến khi gặp một ký tự khác khoảng trắng hoặc đến khi `i` trở thành giá trị âm. Điều này đảm bảo ta đang chỉ đến ký tự cuối cùng của từ cuối cùng trong chuỗi.

Sau đó, ta gán giá trị của biến `lastIndex` bằng `i`. Điều này lưu trữ vị trí cuối cùng của từ cuối cùng trong chuỗi.

Trong vòng lặp while thứ hai, ta đi qua các ký tự của từ cuối cùng bằng cách giảm giá trị của `i` cho đến khi gặp một khoảng trắng hoặc khi `i` trở thành giá trị âm. Điều này cho phép ta đếm số ký tự trong từ cuối cùng.

Cuối cùng, ta trả về hiệu của `lastIndex – i`, tức là độ dài của từ cuối cùng trong chuỗi.

Đây là một cách tiếp cận đơn giản để tính độ dài của từ cuối cùng trong một chuỗi bằng cách đi qua các ký tự từ cuối chuỗi và đếm số ký tự cho đến khi gặp khoảng trắng hoặc khi hết chuỗi.

Giải thích thuật toán bằng Java

class Solution {
  public int lengthOfLastWord(String s) {
    int i = s.length() - 1;

    while (i >= 0 && s.charAt(i) == ' ')
      --i;
    final int lastIndex = i;
    while (i >= 0 && s.charAt(i) != ' ')
      --i;

    return lastIndex - i;
  }
}

Giải thích thuật toán bằng Python

class Solution:
  def lengthOfLastWord(self, s: str) -> int:
    i = len(s) - 1

    while i >= 0 and s[i] == ' ':
      i -= 1
    lastIndex = i
    while i >= 0 and s[i] != ' ':
      i -= 1

    return lastIndex - i

Leave a Reply

Your email address will not be published. Required fields are marked *

PHP Code Snippets Powered By : XYZScripts.com
.
.
.
.