4726. Первое и последнее вхождение

 

Дана строка.

·     Если буква f встречается в ней только один раз, выведите её индекс (нумерация индексов начинается с 0).

·     Если буква f встречается два или более раз, выведите индексы её первого и последнего вхождения.

·     Если буква f в строке не встречается, ничего не выводите.

 

Вход. Одна строка, длина которой не превышает 255 символов.

 

Выход. Выведите результат в зависимости от количества вхождений буквы f в строке.

 

Пример входа 1

Пример выхода 1

comfort

3

 

 

Пример входа 2

Пример выхода 2

office

1 2

 

 

РЕШЕНИЕ

обработка строка

 

Анализ алгоритма

Подсчитаем количество вхождений буквы f в строку, запомнив индексы её первого и последнего появления.

 

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

Строку читаем посимвольно до конца (до символа \n). Индекс текущего символа хранится в переменной ind. Количество появлений буквы f подсчитываем в переменной cnt.

 

cnt = 0; ind = 0;

while(scanf("%c",&ch), ch != '\n')

{

 

В переменных f и s сохраняем индексы первого и последнего появления буквы f.

 

  if (ch == 'f')

  {

 

Если встретилась буква f и она появляется впервые (переменная cnt равна 0), то присваиваем значение текущего индекса переменной f.

 

    if (cnt == 0) f = ind;

 

Буква f встретилась не впервые (если cnt > 0). Присваиваем переменной s значение текущего индекса ind.

 

    if (cnt > 0) s = ind;

    cnt++;

  }

  ind++;

}

 

Выводим ответ в зависимости от количества вхождений буквы f в строку.

 

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()

 

Находим индексы первого и последнего симола f.

 

first_index = s.find('f')

last_index = s.rfind('f')

 

Выводим ответ.

 

if first_index == -1:

 

Буква f не встречается.

 

  pass

elif first_index == last_index:

 

Буква f встречается только один раз.

 

  print(first_index)

else:

 

Буква f встречается два и более раз.

 

  print(first_index, last_index)