Смайлики
Напишите программу, которая посчитает количество смайликов в заданном тексте. Смайликом будем считать последовательность символов, удовлетворяющую условиям: первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз) в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ]. внутри смайлика не может встречаться никаких других символов.
Например, нижеприведенные последовательности являются смайликами:
:)
;
В то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики):
:-)]
;--
-)
::-(
:-()
В этой задаче требуется посчитать количество смайликов, содержащихся в данном тексте.
Входные данные
Вводится одна строка текста, которая может содержать маленькие латинские буквы, пробелы, символы, которые могут встречаться в смайликах. Длина строки не превышает 100 000 символов. Выходные данные
Выведите одно число — количество смайликов, которые встречаются в тексте. Примеры
Ввод
:);]
Вывод
2
73, 8% опрошенных в социальных сетях имеют более друзей. это достаточно много. молодые люди, завязывая дружбу в «виртуальном пространстве», ориентируются в основном, на общность интересов, в таком случае друг является источником какой-либо информации. это, конечно, плюс. однако, в случае виртуальной дружбы возникают следующие проблемы: трудно отследить искренность излагаемой информации, понять истинное отношение виртуального друга к себе, также можно в любой момент прервать общение, нет надобности разрешать конфликты. то есть дружба утрачивает те функции, которые она выполняет в реальном общении, утрачивается и значимость эмоциональной стороны дружбы.
31% молодых людей считают, что общение в интернете решать личные проблемы, а 69% считают, что общение в интернете не этому.
C#. Пример работы на изображении. (Входные данные отличаются)
using System;
using System.Collections.Generic;
using System.Linq;
namespace NSymbs
{
class Program
{
static void Main(string[] args)
{
string input;
input = Console.ReadLine();
int[] param = input.Split("\t ".ToCharArray()).Select(x => int.Parse(x)).ToArray();
input = Console.ReadLine();
int z = input.Length / param[1];
List<string> bufer = new List<string>();
for (int i = 0; i < z; ++i)
bufer.Add(input.Substring(i*param[1], param[1]));
Console.WriteLine(bufer.Distinct().Count());
}
}
}