I answered this question by myself with no help and it was pretty awesome. I finally did a problem without help. I used a for loop and started from the end of the string to the beginning. The conditions were, if my counter variable is zero and next character is a space, continue, else if, increment counter variable by one and else is break. Hope that makes some senses but it worked!
If you are interested in Solving Python Builtin Functions, this might help. stip() will remove all covering spaces from string split(" ") will split string into array separated by " " len(res[-1]) will return length of last word res = s.strip().split(" ") return len(res[-1])
@@gayan1742 Actually it is faster than the solution in the video. Runtime: 28 ms, faster than 91.49% of Python3 online submissions for Length of Last Word. I feel it is ok to use the built in function as we are going to only use them in real world scenario.
@@venkatasundararaman Maybe it's because the solution in the video uses two iterations, which is not really necessary. Iterating from the last character to the left until a space is found, then returning the length does also work. The last time I tried, it took only 0 ms. Not sure if it is because I used Java or not.
strip() and split() string will also do. but watching your video I find sometimes algorithmic solutions might not be intuitive at first but your solution is really clever. I will keep watching your videos
Hey man one personal question for you from where did you have learned the basic of Data structure and algorithm and your video are pretty much helpful to me Thanks a Ton
easy class Solution: def lengthOfLastWord(self, s: str) -> int: temp = "" # using strip method we are actually remove whitespace from lefft and right side string = s.strip() for i in string: if i.isspace(): temp = "" else: temp = temp + i
A very simple method class Solution: def lengthOfLastWord(self, s: str) -> int: count = 0 for i in s[::-1]: if i == " ": if count >= 1: return count else: count += 1 return count
I have submitted this: class Solution(object): def lengthOfLastWord(self, s): array = s.split(' ') x = array[len(array)-1] count = 0 while x == '': count += 1 x = array[len(array) - count] if x != '': counter = 0 for i in x: counter += 1 return counter
My solution: At first we go trough every spaces from the end of the array. Once we reach not space element, this is a word start. After we add elements when non-space character is present. If we have more then one word_symbols saved it's the word that has already started and if we reach other space chracter it's actually an end. class Solution: def lengthOfLastWord(self, s: str) -> int: word_symbols = 0 for i in range(len(s) - 1, -1, -1): if s[i] == ' ' and word_symbols != 0: break if s[i] == ' ': word_symbols = 0 else: word_symbols += 1
My solution: I used extra memory but tried to reduce the time by implementing a hashmap. def lengthOfLastWord(self, s: str) -> int: length = 0 values = {} s += " " for i in s: if i != " ": length += 1 else: if length > 0: values[i] = length length = 0 return values.get(' ')
Instead of iterating through the entire string char by char in C# (which could take much longer the lengthier the end of the string is), you can just use built in string methods .Trim() and .Split() to solve this more quickly in just 3 lines of code: string trimmed = s.Trim(' '); //removes given whitespace chars from ends of s string[] words = trimmed.Split(' '); //splits words in trimmed into separate strings return words[words.Length - 1].Length; //returns length of last word in arr words
im a newb but this is my solution class Solution: def lengthOfLastWord(self, s: str) -> int: s = ' '.join(s.split()) last = s[::-1] count = 0 last = last + " " for c in last: if c == " ": return(count) break count +=1
This is because he forgot to decrement "i" by 1 in next while loop. This works: def lengthOfLastWord(self, s: str) -> int: i, length = len(s) - 1, 0 while s[i] == " ": i -= 1 while i >= 0 and s[i] != " ": length += 1 i -= 1 return length Or you can use other solution in the comments using strip function.
class Solution: def lengthOfLastWord(self, s: str) -> int: endIdx=len(s)-1 strIdx=0 while endIdx>=0: if s[endIdx]==" " and strIdx!=0: return strIdx-endIdx if s[endIdx]!=" " and strIdx==0: strIdx=endIdx endIdx-=1 return strIdx-endIdx
In Java code solution: class Solution { public int lengthOfLastWord(String s) { int count =0; s = s.trim(); int n = s.length(); for(int i=n-1; i>=0; i--){ if(s.charAt(i) != ' '){ count++; }else{ break; } } return count; } }
def lengthOfLastWord(s): i , length = len(s) - 1, -1 while i >= 0: if s[i] == ' ' and length != -1: return length - i if s[i] != ' ' and length == -1: length = i i -= 1 return length + 1 if length != -1 else 0 I did it like this
Hey Neet, I think I brute forced this with 1 for loop, but leetcode doesn't like my solution. Could you or anyone else help me evaluate my solution? and its efficiency in big o notation? class Solution: def lengthOfLastWord(self, s: str) -> int:
just tried to do with beginner knowledge but it only beats 5% lol var lengthOfLastWord = function(s){ s = s.toLowerCase() let a = '' let c = '' let alpha = 'qwertyuioplkjhgfdsazxcvbnm' for(i=s.length-1;i>-1;i--){ a = a + s[i]
✅ EASY PLAYLIST: ruclips.net/video/KLlXCFG5TnA/видео.html
will you be making a hard playlist as well?
I answered this question by myself with no help and it was pretty awesome. I finally did a problem without help. I used a for loop and started from the end of the string to the beginning. The conditions were, if my counter variable is zero and next character is a space, continue, else if, increment counter variable by one and else is break. Hope that makes some senses but it worked!
my code was
new = s.strip(“ “).split(“ “)
return len(new[-1])
If you are interested in Solving Python Builtin Functions, this might help.
stip() will remove all covering spaces from string
split(" ") will split string into array separated by " "
len(res[-1]) will return length of last word
res = s.strip().split(" ")
return len(res[-1])
But then it would be 10x slower.
@@gayan1742 Actually it is faster than the solution in the video. Runtime: 28 ms, faster than 91.49% of Python3 online submissions for Length of Last Word. I feel it is ok to use the built in function as we are going to only use them in real world scenario.
@@venkatasundararaman Maybe it's because the solution in the video uses two iterations, which is not really necessary. Iterating from the last character to the left until a space is found, then returning the length does also work. The last time I tried, it took only 0 ms. Not sure if it is because I used Java or not.
Splitting needs to be done only once, so s.rsplit(maxsplit=1)
better still, you can just do return(len(s.split()[-1]))
strip() and split() string will also do. but watching your video I find sometimes algorithmic solutions might not be intuitive at first but your solution is really clever. I will keep watching your videos
don't need to .strip().
split() removes all the whitespace
class Solution:
def lengthOfLastWord(self, s: str) -> int:
x="1"
y=[]
for i in reversed (s):
if i>x:
y.append(i)
if len(y)>0:
if i
Hey man one personal question for you from where did you have learned the basic of Data structure and algorithm and your video are pretty much helpful to me
Thanks a Ton
easy
class Solution:
def lengthOfLastWord(self, s: str) -> int:
temp = ""
# using strip method we are actually remove whitespace from lefft and right side
string = s.strip()
for i in string:
if i.isspace():
temp = ""
else:
temp = temp + i
return len(temp)
A very simple method
class Solution:
def lengthOfLastWord(self, s: str) -> int:
count = 0
for i in s[::-1]:
if i == " ":
if count >= 1:
return count
else:
count += 1
return count
I solved this in one line using Python3 built-in functions and it's fast and efficient.
return len(s.strip().split()[-1])
I have submitted this:
class Solution(object):
def lengthOfLastWord(self, s):
array = s.split(' ')
x = array[len(array)-1]
count = 0
while x == '':
count += 1
x = array[len(array) - count]
if x != '':
counter = 0
for i in x:
counter += 1
return counter
My solution:
At first we go trough every spaces from the end of the array. Once we reach not space element, this is a word start. After we add elements when non-space character is present. If we have more then one word_symbols saved it's the word that has already started and if we reach other space chracter it's actually an end.
class Solution:
def lengthOfLastWord(self, s: str) -> int:
word_symbols = 0
for i in range(len(s) - 1, -1, -1):
if s[i] == ' ' and word_symbols != 0:
break
if s[i] == ' ':
word_symbols = 0
else:
word_symbols += 1
return word_symbols
My solution: I used extra memory but tried to reduce the time by implementing a hashmap.
def lengthOfLastWord(self, s: str) -> int:
length = 0
values = {}
s += " "
for i in s:
if i != " ":
length += 1
else:
if length > 0:
values[i] = length
length = 0
return values.get(' ')
1 liner solution:
class Solution:
def lengthOfLastWord(self, s: str) -> int: return len(s.split()[-1])
For C#, it's quite similar;
var count = 0;
var end = s.Length - 1;
while(s[end] == ' ')
{
end--;
}
for(var i = end; i >= 0 && s[i] != ' '; i--)
{
count++;
}
return count;
Instead of iterating through the entire string char by char in C# (which could take much longer the lengthier the end of the string is), you can just use built in string methods .Trim() and .Split() to solve this more quickly in just 3 lines of code:
string trimmed = s.Trim(' '); //removes given whitespace chars from ends of s
string[] words = trimmed.Split(' '); //splits words in trimmed into separate strings
return words[words.Length - 1].Length; //returns length of last word in arr words
class Solution:
def lengthOfLastWord(self, s: str) -> int:
length, prevLength = 0, 0
for char in s:
if char == " ":
if length != 0:
prevLength = length
length = 0
else:
length += 1
return length if length != 0 else prevLength
class Solution(object):
def lengthOfLastWord(self, s):
strr=s.strip()
str=strr.split(" ")
l=str[-1]
return len(l)
im a newb but this is my solution
class Solution:
def lengthOfLastWord(self, s: str) -> int:
s = ' '.join(s.split())
last = s[::-1]
count = 0
last = last + " "
for c in last:
if c == " ":
return(count)
break
count +=1
This code is not working on leedcode compiler. I getting time out errror
This is because he forgot to decrement "i" by 1 in next while loop. This works:
def lengthOfLastWord(self, s: str) -> int:
i, length = len(s) - 1, 0
while s[i] == " ":
i -= 1
while i >= 0 and s[i] != " ":
length += 1
i -= 1
return length
Or you can use other solution in the comments using strip function.
wow i got the exact same solution
s = " fly me to the moon "
l = s.split()
last_word = l[-1]
print(len(last_word))
class Solution:
def lengthOfLastWord(self, s: str) -> int:
endIdx=len(s)-1
strIdx=0
while endIdx>=0:
if s[endIdx]==" " and strIdx!=0:
return strIdx-endIdx
if s[endIdx]!=" " and strIdx==0:
strIdx=endIdx
endIdx-=1
return strIdx-endIdx
In Java code solution:
class Solution {
public int lengthOfLastWord(String s) {
int count =0;
s = s.trim();
int n = s.length();
for(int i=n-1; i>=0; i--){
if(s.charAt(i) != ' '){
count++;
}else{
break;
}
}
return count;
}
}
def lengthOfLastWord(s):
i , length = len(s) - 1, -1
while i >= 0:
if s[i] == ' ' and length != -1:
return length - i
if s[i] != ' ' and length == -1:
length = i
i -= 1
return length + 1 if length != -1 else 0
I did it like this
Hey can you please make a video on “matrix block sum”
why not just strip() and convert the string into array and get the last word from the array and then just return its length?
i love you sooo much dude
Question for you Neetcode - do you think doing these problems improve your ability as a software engineer at all?
No. They are just silly questions. Just like common entrance exams for high school. They don't really help you out in high school
Hey Neet,
I think I brute forced this with 1 for loop, but leetcode doesn't like my solution. Could you or anyone else help me evaluate my solution? and its efficiency in big o notation?
class Solution:
def lengthOfLastWord(self, s: str) -> int:
maxStr = ''
for i in range(len(s)):
if s[i] != ' ':
maxStr += s[i]
continue
if s[i:] == ' '*len(s[i:]):
return len(maxStr)
maxStr = ''
return len(maxStr)
Thanks in advance!
-Harris
i used trim() and split(" "). think that's ok
How's about?
class Solution:
def lengthOfLastWord(self, s: str) -> int:
return (len((s.split())[len(s.split())-1]))
my answer : arr=s.split()
return(len(arr[-1]))
beats 100%
I used the same method, but seems to be exceeding time limit
return len(s.split()[-1])
just tried to do with beginner knowledge but it only beats 5% lol
var lengthOfLastWord = function(s){
s = s.toLowerCase()
let a = ''
let c = ''
let alpha = 'qwertyuioplkjhgfdsazxcvbnm'
for(i=s.length-1;i>-1;i--){
a = a + s[i]
}
for(let i=0;i-1){
break
}
} for(let i=0; i-1){
c = c+ a[i]
}else if (a[i]==' '){
return c.length
}
}
return c.length
}
Sir how do I start with DP?
return len(s.strip().split(" ")[-1])
this would work too
class Solution:
def lengthOfLastWord(self, s: str) -> int:
new = s.split()
req = new[-1]
return len(req)
Done with built in functions