8986. Удаление фрагмента

 

Задана строка, состоящая из латинских букв и пробелов. Удалите в ней все символы с индексами от n до m включительно. Индексация начинается с 0.

 

Вход. В первой строке содержится текст, состоящий из не более чем 1000 латинских букв и пробелов. Вторая строка содержит два целых числа n и m (n m).

 

Выход. Выведите обновленную строку.

 

Пример входа

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

abrakadabra

3 6

abrabra

 

 

РЕШЕНИЕ

строки

 

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

Конкатенируем подстроки s[0; n – 1] и s[m + 1; len], где len – длина входной строки.

 

Задачу можно решить другим способом, скопировав подстроку s[m+1] в позицию s[n].

 

Пример

В задаче следует удалить подстроку s[3..6]. Для этого необходимо скопировать данные начиная с символа s[7] и до ноль байта включительно в позицию s[3].

 

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

Объявим символьный массив.

 

char s[1001];

 

Читаем входные данные.    

 

gets(s);

scanf("%d %d", &n, &m);

 

Совершаем копирование подстроки.

 

strcpy(s + n, s + m + 1);

 

Выводим результат.

 

puts(s);

 

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

 

#include <iostream>

#include <string>

using namespace std;

 

int i, n, m;

string s;

 

int main(void)

{

  getline(cin, s);

  cin >> n >> m;

  s = s.substr(0, n) + s.substr(m + 1);

  cout << s << endl;

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s = con.nextLine();

    int n = con.nextInt();

    int m = con.nextInt();

 

    s = s.substring(0,n) + s.substring(m+1);

 

    System.out.println(s);   

    con.close();

  }

}

 

Python реализация

 

s = input()

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

print (s[:a] + s[b+1:])