Bir simdən əlavə boşluqları silin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Capgemini Infosys MAQ o9 həlləri TCS
SimBaxılıb 387

Problem bəyanat

“Bir simdən əlavə boşluqları silin” problemində a sim "S". Verilən sətirdən bütün boşluqları silmək üçün bir proqram yazın.

Giriş Formatı

Bəzi boşluqlu s simli sətri ehtiva edən ilk və yalnız bir sətir.

Çıxış formatı

Bütün boşluqları çıxardıqdan sonra bir simli çap edin.

Məhdudiyyətlər

  • 1 <= | s | <= 10 ^ 6
  • s [i] kiçik bir ingilis əlifbası olmalıdır, “,”, “.”, “?” və ya yer ”“.

misal

tutorialcup        is the  best   platform.
tutorialcup is the best platform.

Alqoritm

1. I, j hər ikisi də ipin başlanğıcını göstərən iki göstərici ilə ipi keçin

2. 'i' göstəricisi çıxış sətirində doldurulacaq növbəti vəziyyəti izləyir və 'j' göstəricisi bütün simvolları bir-bir oxumaqdır

3. Xarakter boşluq olmayan bir xarakterdirsə, xarakter 'i' göstəricisinin yerləşdiyi yerə kopyalanır və sonra həm i, j artırın

4. xarakter ya nöqtə, sual işarəsi və ya vergüldürsə, əvvəlki boşluğu silin

5. Ardıcıl iki boşluq varsa, yalnız bir boşluğu i göstəricisinə kopyalayaraq bir boşluğu silin

Həyata keçirilməsi

Bir simdən əlavə boşluqların silinməsi üçün C ++ proqramı

#include <iostream>
using namespace std;

int main()
{
  string s;
  getline(cin, s);
  int n = s.length();
  int i = 0, j = -1;
  int flag=0;
  while(++j<n&&s[j]==' ');
  while(j<n)
  {
    if(s[j]!=' ')
    {
      if((s[j]=='.'||s[j]==','||s[j]=='?')&&i-1>=0&&s[i-1]==' ')
        s[i-1]=s[j++];
      else
        s[i++]=s[j++];
      flag=0;
    }
    else if(s[j++]==' ')
    {
      if(!flag)
      {
        s[i++]=' ';
        flag=1;
      }
    }
  }
  if(i<=1)
    s.erase(s.begin() + i, s.end());
  else
    s.erase(s.begin()+i-1,s.end());
  cout<<s;
  return 0;
}

Bir simdən əlavə boşluqların silinməsi üçün Java proqramı

import java.util.Scanner;
class sum
{
    public static void main(String[] args)
    {
        Scanner sr = new Scanner(System.in);
        String s = sr.nextLine();
  int n = s.length();
        char ans[] = new char[n];
  int i = 0, j = -1;
  int flag=0;
  while(++j<n&&s.charAt(j)==' ');
  while(j<n)
  {
    if(s.charAt(j)!=' ')
    {
      if((s.charAt(j)=='.'||s.charAt(j)==','||s.charAt(j)=='?')&&i-1>=0&&s.charAt(i-1)==' ')
        ans[i-1]=s.charAt(j++);
      else
        ans[i++]=s.charAt(j++);
      flag=0;
    }
    else if(s.charAt(j++)==' ')
    {
      if(flag==0)
      {
        ans[i++]=' ';
        flag=1;
      }
    }
  }
        System.out.println(ans);
    }
}
jvsuqs bwdbh, wdv  ud  .
jvsuqs bwdbh, wdv ud.

Bir simdən əlavə boşluqların çıxarılması üçün mürəkkəblik analizi

Zamanın mürəkkəbliyi

O (n) hara n verilən "s" sətrinin ölçüsüdür. Burada sadəcə simdən keçib bütün ekstra boşluqları buradan çıxardıq.

Kosmik Mürəkkəblik

O (1) çünki burada əlavə boşluqlardan istifadə etmirik. Sadəcə verilən simli yeniləyin və nəhayət son yeniləmələrdən sonra çap edin.

Translate »