8222. Длина подстроки

 

В заданной строке нумерация символов начинается с 1. Подстрокой S[i..j] будем называть совокупность символов, которые начинаются в позиции і и заканчиваются в позиции j. Напишите программу, которая для заданных индексов і и j выведет длину подстроки, а также все символы этой подстроки не нарушая порядок их следования в строке.

 

Вход. Первая строка содержит строку S, длина которой не превышает 100. Во второй строке записаны два индекса i и j (1 ≤ і ≤ j ≤ size(S), где через size(S) обозначена длина строки).

 

Выход. В первой строке выведите длину подстроки, а во второй запишите все символы подстроки в порядке их следования в строке S.

 

Пример входа

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

abracadabra

2 5

4

brac

 

 

РЕШЕНИЕ

строки

 

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

Прочитаем входную строку в символьный массив, начиная с первой (не нулевой) позиции. Длина подстроки S[i..j] равна ji + 1. Символы подстроки выводим при помощи цикла for.

 

Входную строку читаем в переменную типа string. Добавим спереди нее символ пробела чтобы нумерация букв начиналась с 1. Воспользуемся методом substr для выделения подстроки.

 

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

Объявим символьный массив для хранения строки.

 

char s[110];

 

Читаем входные данные. Поскольку индексация в строке начинается с 1, будем ее читать в массив начиная с позиции 1.

 

gets(s + 1);

scanf("%d %d", &i, &j);

 

Выводим длину подстроки S[i..j], она равна ji + 1.

 

printf("%d\n", j - i + 1);

 

Выводим символы подстроки.

 

for (k = i; k <= j; k++)

  printf("%c", s[k]);

printf("\n");

 

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

Читаем входные данные. Ко входной строке s спереди добавим пробел чтобы нумерация входных символов начиналась с 1.

 

cin >> s; s = " " + s;

cin >> i >> j;

 

Выделяем подстроку длины ji + 1, которая начинается в позиции i.

 

res = s.substr(i, j - i + 1);

 

Выводим ответ: длину искомой подстроки и саму подстроку.

 

cout << res.length() << endl;

cout << res << endl;

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s = con.nextLine();

    s = " " + s;

 

    int i = con.nextInt();

    int j = con.nextInt();

 

    System.out.println(j - i + 1);

    s = s.substring(i,j+1);

    System.out.println(s);

    con.close();

  }

}

 

Python реализация

 

s = input()

a, b = map(int,input().split())

print (b-a+1)

print (s[a-1:b])