11.9k views
2 votes
Hello, for this question, we want to return the length of the

length of the last word of a string. I was wondering why the method
that I used returns the wrong number.
Thanks!
1 2 3 4 5 6 7 class Solution { public int lengthOfLastWord(String s) { String[] ary = (""); for (int i = 0; i < ; i++) { if (ary[i] "") { return - i; == } } return 0 REBO J

1 Answer

1 vote

Answer:

There are a few issues with the provided code that result in it returning the wrong number:

1. Line 4 is initializing the string array `ary` with an empty string, which means that it will only have one element (which is the empty string itself). This does not split the input string `s` into separate words as intended.

2. The loop condition in line 5 (`i < ;`) is missing an argument, which means that the loop will not execute.

3. The `if` condition in line 6 is checking if `ary[i]` is an empty string (`""`), which will never be true since `ary` was initialized with an empty string. It should instead check if `s.charAt(i)` is a space character.

4. The return statement in line 7 is using a negative value (`- i`) as the length of the last word, which is incorrect and will always result in a negative number.

To fix these issues, you can modify the code as follows:

class Solution {

public int lengthOfLastWord(String s) {

String[] words = s.split(" ");

if (words.length == 0) {

return 0;

} else {

return words[words.length - 1].length();

}

}

}

Here, we are splitting the input string `s` into an array of words using the `split` method, which splits the string on spaces. If the resulting array has length 0 (meaning there were no words in the original string), we return 0. Otherwise, we return the length of the last word in the array (which is accessed using the index `words.length - 1`).

User Pobk
by
7.8k points

No related questions found