Условие: В заданной строке удалить последнюю пару символов «:=», которая найдется в строке.
Тесты:
Ввод | Вывод |
sdfsd fdg :=sdrgs := :+:=:= sdf FUHIUh := sdfdf | sdfsd fdg :=sdrgs := :+:=:= sdf FUHIUh sdfdf |
фыпва :+вап:=аоап:=вр := в | фыпва :+вап:=аоап:=вр в |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <string> using namespace std; int main() { string text; // входная строка string subStr ( ":=" ); // искомая подстрока getline ( cin, text ); // считывание входной строки size_t pos = text.rfind( subStr ); // нахождение последней позиции искомой подстроки if ( pos != string::npos ) { text.replace ( pos, subStr.length(), "" ); // замена подстроки } cout << text << '\n'; // вывод результата return 0; } |
Код программы на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import java.util.*; import java.lang.*; import java.io.*; class SeqApp { public static void main( String[] args ) { String subStr = ":=" ; // искомая подстрока // считывание входной строки Scanner in = new Scanner(System.in); // входная строка String text = in.nextLine(); in.close(); int pos = text.lastIndexOf( subStr ); // нахождение последней позиции искомой подстроки if ( pos >= 0 ) // меняем текст только если нашли подстроку { String left = ""; if ( pos > 0 ) // выделяем левую чать до найденной подстроки, может быть пустой { left = text.substring( 0, pos ); } String right = text.substring( pos + subStr.length() ); // выделяемм правую чать после подстроки text = left + right; // результирующий текст } // вывод результата System.out.println( text ); } } |
Ссылка на ideone.com: https://ideone.com/Z94AwR
План программы:
- Ввод строки из стандартного потока ввода. Здесь используется getline, чтобы можно было вводить символы-разделители
- Используется метод rfind класса string, позволяющий найти подстроку, начиная с конца
- Результат поиска — позиция символа, с которого начинается искомая построка
- Если позиция найдена, то используется метод replace, который заменяет все символы найденной подстроки на пустую строку
Ссылка на программу http://ideone.com/x5AtbG
Зачтено
Код на Java излишне усложнён. Например, replaceAll() совсем не нужна. Просто начинайте копировать на два символа правее найденной позиции.
Понял, уже переделываю.