طول آخرین کلمه راه حل کد


سطح دشواری ساده
اغلب در گوگل
رشته

بیان مسأله

در این مشکل چند کلمه ای است رشته داده شده است و ما باید طول آخرین کلمه موجود در آن رشته را برگردانیم. اگر کلمه ای وجود نداشته باشد ، باید 0 را برگردانیم.

مثال

s = "Hello World"
5

توضیح: طول کلمه آخر "5" است.

s = " "
0

توضیح: چون کلمه ای وجود ندارد ، جواب 0 است.

روش

برای حل این مشکل ابتدا باید تمام فضاهای سفید موجود در رشته را در هر دو انتها مرتب کنیم. سپس می توانیم با تکرار رشته از اولین کاراکتر به حرف آخر ، طول کلمه آخر را پیدا کنیم. برای پیرایش می توان از دو متغیر "start" و "end" استفاده کرد که به ترتیب شاخص کاراکتر اول و آخرین کاراکتر را در رشته داده شده ذخیره می کند.

 

برای یافتن شاخص کاراکتر اول ، متغیر "start" = 0 را مقدار دهی اولیه کنید.
حالا به سادگی از حلقه while استفاده کنید و مقدار را در متغیر افزایش دهید تا اولین کاراکتر بدست آوریم.
به همین ترتیب ، برای آخرین کاراکتر متغیر را با n-1 مقداردهی اولیه می کنیم ، جایی که n اندازه رشته داده شده است و مقدار آن را در حلقه while کاهش می دهیم تا زمانی که اولین کاراکتر را دریافت نکنیم (از انتها)

اگر start> end باشد ، به این معنی است که هیچ رشته ای در رشته ورودی وجود ندارد ، بنابراین 0 را بر می گردانیم.
در غیر این صورت ما رشته واقعی خود را داریم.

طول آخرین کلمه

اکنون برای یافتن طول کلمه آخر می توانیم یک متغیر تکرار شونده بدست آوریم تا رشته واقعی را از انتها تکرار کنیم تا اینکه با فضای خالی روبرو شویم یا به اولین کاراکتر رشته برسیم.
حال تفاوت بین شاخص آخرین کاراکتر (ذخیره شده در انتهای متغیر) و شاخص فعلی را که در pos متغیر ذخیره می شود ، برمی گردانیم.

پیاده سازی

برنامه C ++ برای طول کلمه آخر

#include <bits/stdc++.h>
using namespace std;

int lengthOfLastWord(string s) 
{
        
        int n=s.size();
        if(n==0) return 0;
        
        int start,end;
        
        start=0;
        while(start< n && s[start]==' ') start++;      //left trim
        
        end=n-1;
        while(end >=0 && s[end]==' ') end--;         //right trim
        
        if(start>end) return 0;
        
        int pos=end;
        while(pos>=start)
        {
            if(s[pos]==' ') return end-pos;
            else pos--;
        }
        
        return end-pos;
        
}
int main() 
{
    string s="Hello World";
    
    cout<<lengthOfLastWord(s)<<endl;
    
  return 0; 
}
5

برنامه جاوا برای طول کلمه آخر

import java.util.*;
import java.lang.*;

class LastWord
{  
    public static int lengthOfLastWord(String s) 
    {
        int n=s.length();
        if(n==0) return 0;
        
        int start,end;
        
        start=0;
        while(start< n && s.charAt(start)==' ') start++;    //left trim
        
        end=n-1;
        while(end >=0 && s.charAt(end)==' ') end--;      //right trim
        
        if(start>end) return 0;
        
        int pos=end;
        while(pos>=start)
        {
            if(s.charAt(pos)==' ') return end-pos;
            else pos--;
        }
        
        return end-pos;
    }
    
    public static void main(String args[])
    {
        String s="Hello World";
        System.out.println(lengthOfLastWord(s));
    }
}
5

تحلیل پیچیدگی برای طول کلمه آخر

پیچیدگی زمان

بر) : جایی که n طول رشته ورودی است. زیرا ما در حال تکرار از طریق رشته در یک حلقه هستیم و در بدترین حالت می تواند به کاراکتر اول برسد.

پیچیدگی فضا 

O (1): صرف نظر از ورودی ، حافظه ثابت مصرف می شود.