Birinci və sonuncu yerləşmə#4726

Birinci və sonuncu yerləşmə (Həll təhlili)

Simli '' hərfinin girişlərinin sayını hesablayırıq, onun birinci və sonuncu meydana çıxma indekslərini yadda saxlayırıq.

Alqoritmin reallaşdırılması

Sətiri simvol-simvol oxuyuruq (simvol '' qədər). Cari simvolun indeksi dəyişənində saxlanılır. '' hərfinin meydana çıxmalarının sayını dəyişənində hesablayırıq.

cnt = 0; ind = 0;
while(scanf("%c",&ch), ch != '\n')
{

və dəyişənlərində '' hərfinin birinci və sonuncu meydana çıxma indekslərini saxlayırıq.

  if (ch == 'f')
  {

Əgər '' hərfi ilk dəfə rast gəlinirsə (dəyişən -a bərabərdirsə), cari indeksi dəyişəninə mənimsədik.

    if (cnt == 0) f = ind;

'' hərfi ilk dəfə rast gəlinməyibsə (əgər cnt > 0). dəyişəninə cari indeks dəyərini mənimsədik.

    if (cnt > 0) s = ind;
    cnt++;
  }
  ind++;
}

Çıxış cavabını sətirdə '' hərfinin meydana çıxma sayından asılı olaraq veririk.

if (cnt == 1)
  printf("%d\n",f);
else 
if (cnt > 1)
   printf("%d %d\n",f,s);

Java reallaşdırılması

import java.util.*;

public class Main
{  
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    String str = con.nextLine(); 
    int first = str.indexOf("f");
    int last = str.lastIndexOf("f");
    if (first != -1)
    {
      if (first == last) System.out.println(first);
      else System.out.println(first + " " + last);
    }	
  }  
}  

Python reallaşdırılması

Giriş sətirini oxuyuruq.

s = input()

Birinci və sonuncu '' simvolunun indekslərini tapırıq.

first_index = s.find('f')
last_index = s.rfind('f')

Çıxış cavabını veririk.

if first_index == -1:

'' hərfi rast gəlinmir.

  pass
elif first_index == last_index:

'' hərfi yalnız bir dəfə rast gəlinir.

  print(first_index)
else:

'' hərfi iki və daha çox dəfə rast gəlinir.

  print(first_index, last_index)