Given a string s consisting of upper/lower-case alphabets and empty space characters ‘ ‘, return the length of the last word in the string. If the last word does not exist, return 0.
Examples:
Input : str = "Geeks For Geeks"
Output : 5
length(Geeks)= 5
Input : str = "Start Coding Here"
Output : 4
length(Here) = 4
Input : **
Output : 0
Approach 1: Iterate String from index 0
If we iterate the string from left to right, we would have to be careful about the spaces after the last word. The spaces before the first word can be ignored easily. However, it is difficult to detect the length of the last word if there are spaces at the end of the string. This can be handled by trimming the spaces before or at the end of the string. If modifying the given string is restricted, we need to create a copy of the string and trim spaces from that.
C++
#include <iostream>
#include <string>
using namespace std;
class GFG {
public :
int lengthOfLastWord( const string& a) {
int len = 0;
string x = a;
x.erase(0, x.find_first_not_of( " " ));
x.erase(x.find_last_not_of( " " ) + 1);
for ( int i = 0; i < x.length(); i++) {
if (x[i] == ' ' )
len = 0;
else
len++;
}
return len;
}
};
int main() {
string input = "Geeks For Geeks " ;
GFG gfg;
cout << "The length of last word is " << gfg.lengthOfLastWord(input) << endl;
return 0;
}
|
Java
public class GFG {
public int lengthOfLastWord( final String a)
{
int len = 0 ;
String x = a.trim();
for ( int i = 0 ; i < x.length(); i++) {
if (x.charAt(i) == ' ' )
len = 0 ;
else
len++;
}
return len;
}
public static void main(String[] args)
{
String input = "Geeks For Geeks " ;
GFG gfg = new GFG();
System.out.println( "The length of last word is "
+ gfg.lengthOfLastWord(input));
}
}
|
Python3
def lengthOfLastWord(a):
l = 0
x = a.strip()
for i in range ( len (x)):
if x[i] = = " " :
l = 0
else :
l + = 1
return l
if __name__ = = "__main__" :
inp = "Geeks For Geeks "
print ( "The length of last word is" ,
lengthOfLastWord(inp))
|
C#
using System;
class GFG {
public virtual int lengthOfLastWord( string a)
{
int len = 0;
string x = a.Trim();
for ( int i = 0; i < x.Length; i++) {
if (x[i] == ' ' ) {
len = 0;
}
else {
len++;
}
}
return len;
}
public static void Main( string [] args)
{
string input = "Geeks For Geeks " ;
GFG gfg = new GFG();
Console.WriteLine( "The length of last word is "
+ gfg.lengthOfLastWord(input));
}
}
|
Javascript
<script>
function lengthOfLastWord(a)
{
let len = 0;
x = a.trim();
for (let i = 0; i < x.length; i++) {
if (x[i] == ' ' ) {
len = 0;
}
else {
len++;
}
}
return len;
}
input = "Geeks For Geeks " ;
document.write( "The length of last word is " + lengthOfLastWord(input));
</script>
|
Output
The length of last word is 5
Approach 2: Iterate the string from the last index. This idea is more efficient since we can easily ignore the spaces from the last. The idea is to start incrementing the count when you encounter the first alphabet from the last and stop when you encounter a space after those alphabets.
C++
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int length(string str)
{
int count = 0;
bool flag = false ;
for ( int i = str.length() - 1; i >= 0; i--) {
if ((str[i] >= 'a' && str[i] <= 'z' )
|| (str[i] >= 'A' && str[i] <= 'Z' )) {
flag = true ;
count++;
}
else {
if (flag == true )
return count;
}
}
return count;
}
int main()
{
string str = "Geeks for Geeks" ;
cout << "The length of last word is " << length(str);
return 0;
}
|
Java
public class GFG {
public int lengthOfLastWord( final String a)
{
boolean char_flag = false ;
int len = 0 ;
for ( int i = a.length() - 1 ; i >= 0 ; i--) {
if (Character.isLetter(a.charAt(i))) {
char_flag = true ;
len++;
}
else {
if (char_flag == true )
return len;
}
}
return len;
}
public static void main(String[] args)
{
String input = "Geeks For Geeks " ;
GFG gfg = new GFG();
System.out.println( "The length of last word is "
+ gfg.lengthOfLastWord(input));
}
}
|
Python3
def findLength( str ):
count = 0
flag = False
for i in range ( len ( str ) - 1 , - 1 , - 1 ):
if (( str [i] > = 'a' and str [i] < = 'z' ) or ( str [i] > = 'A' and str [i] < = 'Z' )):
flag = True
count + = 1
elif (flag = = True ):
return count
return count
str = "Geeks for Geeks"
print ( "The length of last word is" ,
findLength( str ))
|
C#
using System;
class GFG {
public virtual int lengthOfLastWord( string a)
{
bool char_flag = false ;
int len = 0;
for ( int i = a.Length - 1; i >= 0; i--) {
if ( char .IsLetter(a[i])) {
char_flag = true ;
len++;
}
else {
if (char_flag == true ) {
return len;
}
}
}
return len;
}
public static void Main( string [] args)
{
string input = "Geeks For Geeks " ;
GFG gfg = new GFG();
Console.WriteLine( "The length of last word is "
+ gfg.lengthOfLastWord(input));
}
}
|
PHP
<?php
function length( $str )
{
$count = 0;
$flag = false;
for ( $i = strlen ( $str )-1 ; $i >=0 ; $i --)
{
if ( ( $str [ $i ] >= 'a' && $str [ $i ]<= 'z' ) ||
( $str [ $i ] >= 'A' && $str [ $i ]<= 'Z' ))
{
$flag = true;
$count ++;
}
else
{
if ( $flag == true)
return $count ;
}
}
return $count ;
}
$str = "Geeks for Geeks" ;
echo "The length of last word is " , length( $str );
?>
|
Output
The length of last word is 5
This article is contributed by Saloni Baweja. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Method #3 : Using split() and list
- As all the words in a sentence are separated by spaces.
- We have to split the sentence by spaces using split().
- We split all the words by spaces and store them in a list.
- Print the length of the last word of the list.
Below is the implementation:
C++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int length(string str) {
vector<string> lis;
string word = "" ;
for ( char c : str) {
if (c == ' ' ) {
lis.push_back(word);
word = "" ;
} else {
word += c;
}
}
lis.push_back(word);
return lis.back().length();
}
int main() {
string str = "Geeks for Geeks" ;
cout << "The length of last word is " << length(str) << endl;
return 0;
}
|
Java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static int length(String str) {
List<String> lis = new ArrayList<>();
String word = "" ;
for ( char c : str.toCharArray()) {
if (c == ' ' ) {
lis.add(word);
word = "" ;
} else {
word += c;
}
}
lis.add(word);
return lis.get(lis.size() - 1 ).length();
}
public static void main(String[] args) {
String str = "Geeks for Geeks" ;
System.out.println( "The length of last word is " + length(str));
}
}
|
Python3
def length( str ):
lis = list ( str .split( " " ))
return len (lis[ - 1 ])
str = "Geeks for Geeks"
print ( "The length of last word is" ,
length( str ))
|
Javascript
<script>
function length(str)
{
var lis = str.split( " " )
return lis[lis.length - 1].length;
}
var str = "Geeks for Geeks"
document.write( "The length of last word is " +
length(str));
</script>
|
C#
using System;
public class Program {
static int length( string str)
{
string [] lis = str.Split( ' ' );
return lis[lis.Length - 1].Length;
}
static void Main()
{
string str = "Geeks for Geeks" ;
Console.WriteLine( "The length of last word is "
+ length(str));
}
}
|
Output
The length of last word is 5
Please Login to comment...