Перше та останнє входження#4726

Перше та останнє входження (Розбір)

Порахуємо кількість входжень літери '' у рядок, запам'ятавши індекси її першої та останньої появи.

Реалізація алгоритму

Рядок читаємо посимвольно до кінця (до символу ''). Індекс поточного символу зберігається в змінній . Кількість появ літери '' підраховуємо в змінній .

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

В змінних і зберігаємо індекси першої та останньої появи літери ''.

  if (ch == 'f')
  {

Якщо зустрілася літера '' і вона з'являється вперше (змінна дорівнює ), то присвоюємо значення поточного індексу змінній .

    if (cnt == 0) f = ind;

Літера '' зустрілася не вперше (якщо cnt > 0). Присвоюємо змінній значення поточного індексу .

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

Виводимо відповідь залежно від кількості входжень літери '' у рядок.

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

Java реалізація

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 реалізація

Читаємо вхідний рядок.

s = input()

Знаходимо індекси першого та останнього символа ''.

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

Виводимо відповідь.

if first_index == -1:

Літера '' не зустрічається.

  pass
elif first_index == last_index:

Літера '' зустрічається лише один раз.

  print(first_index)
else:

Літера '' зустрічається два і більше разів.

  print(first_index, last_index)