අන්තිම වචන ලීට්කෝඩ් විසඳුමේ දිග


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ගූගල්
String

ගැටළු ප්රකාශය

මෙම ගැටලුවේදී බහු වචන පේළියකි ලබා දී ඇති අතර එම නූලෙහි ඇති අවසාන වචනයේ දිග අපට ආපසු ලබා දිය යුතුය. වචන නොමැති නම් අපට 0 ආපසු යා යුතුය.

උදාහරණයක්

s = "Hello World"
5

පැහැදිලි කිරීම: “ලෝකය” යන අවසාන වචනයේ දිග 5 කි.

s = " "
0

පැහැදිලි කිරීම: වචනයක් නොමැති බැවින් පිළිතුර 0 වේ.

ප්රවේශය

මෙම ගැටළුව විසඳීම සඳහා පළමුව අපි කෙළවරේ ඇති සියලුම සුදු අවකාශයන් දෙපැත්තෙන්ම කපා ගත යුතුය. පළමු අක්‍ෂරයේ සිට අන්තිම අක්‍ෂරය දක්වා නූල නැවත යෙදීමෙන් අපට අවසාන වචනයේ දිග සොයාගත හැකිය. කැපීම සඳහා අපට 'ආරම්භක' සහ 'අවසානය' යන විචල්යයන් දෙකක් භාවිතා කළ හැකි අතර එමඟින් ලබා දී ඇති නූලෙහි පළමු අක්‍ෂරයේ සහ අවසාන අක්‍ෂරයේ දර්ශකය පිළිවෙලින් ගබඩා වේ.

 

පළමු අක්‍ෂරයේ දර්ශකය සොයා ගැනීම සඳහා විචල්ය 'ආරම්භය' = 0 ආරම්භ කරන්න.
දැන් සරල ලූපයක් භාවිතා කර අපට පළමු අක්‍ෂරය නොලැබෙන තෙක් විචල්‍යයේ අගය වැඩි කරන්න.
ඒ හා සමානව අන්තිම අක්ෂර සඳහා විචල්‍යය n-1 සමඟ ආරම්භ කරන්න, එහිදී n යනු දී ඇති නූල්වල ප්‍රමාණය වන අතර පළමු අක්‍ෂරය අපට නොලැබෙන තෙක් (අග සිට) එහි අගය අඩු කරන්න.

ආරම්භය> අවසානය නම් ඉන් අදහස් කරන්නේ ආදාන නූලෙහි කිසිදු අක්‍ෂරයක් නොමැති බැවින් 0 නැවත ලබා දෙන්න.
නැතිනම් අපේ නියම නූල තිබේ.

අන්තිම වචනයේ දිග

දැන් අන්තිම වචනයේ දිග සොයා ගැනීම සඳහා අපට දැන් සත්‍ය ධ්‍රැවයේ අවසානය සිට කිසිදු සුදු පැහැති අවකාශයක් හමු නොවන තෙක් නැවත නැවත විචලනය කළ හැකි විචල්‍ය පොස් එකක් ගත හැකිය.
දැන් අපි අන්තිම අක්ෂර දර්ශකය (විචල්ය අන්තයේ ගබඩා කර ඇත) සහ විචල්ය පොස් තුළ ගබඩා කර ඇති වත්මන් දර්ශකය අතර වෙනස නැවත ලබා දෙන්නෙමු.

ක්රියාත්මක කිරීම

අවසාන වචනයේ දිග සඳහා 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 යනු ආදාන නූලෙහි දිග වේ. මන්ද යත්, අපි තනි ලූපයකින් නූල හරහා ගමන් කරන අතර නරකම අවස්ථාවක එය පළමු අක්‍ෂරයට යා හැකිය.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1): ආදානය නොසලකා නිරන්තර මතකය පරිභෝජනය කරයි.