Форум программистов, компьютерный форум CyberForum.ru

Работа со строками ( поиск, проверка) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать красиво? http://www.cyberforum.ru/cpp-beginners/thread1760925.html
Как реализовать красиво и удобно функционал string to enum ( чтобы по стрингу брать элемент из енума) , с возможностью добавлять новые элементы к enum только в одном месте? есть у меня такой вариант: class A { public: enum class TYPE { enum1, enum2,
C++ Среди чисел 1+1/2, 1+1/3,… найти первое, меньшее а Дано число а (1 < a < 1,5). Среди чисел 1+1/2, 1+1/3,… найти первое, меньшее а. #include <iostream> #include<conio.h> using namespace std; int main () { double a, one=1; cout <<"Vvedite a"<<endl; cin>>a; for(double i>=2; i++) http://www.cyberforum.ru/cpp-beginners/thread1760924.html
Работа с файлами: багаж пассажиров C++
Всем привет, вот есть задача и начало кода, только не пойму как его правильно сделать(( За любую помощ буду очень благодарен!!! Создать и записать на диск файл, который содержит данныйе и выводит на экран информацию:: О багаже пасажжиров: Структура записи: • Номер месте, занимаемом пассажир, • Масса багажа, • Наличие льгот в пассажира. Количество записей в файле> 10. Вывести на печать...
Не выполняет программу C++
#include <stdio.h> #include <conio.h> #include <math.h> void main() {int i, n, x, fact, znak, y; printf(" n = "); scanf("%d", &n); printf(" x = "); scanf("%f", &x);
C++ Определить значение функции для заданного значения аргумента http://www.cyberforum.ru/cpp-beginners/thread1760820.html
Определить значение функции в зависимости от значения аргумента
C++ Программа для работы с массивом объектов типа Worker (работник) Здравствуйте! дали такое интересное задание: Worker: Фамилия и инициалы, Должность, Год поступления на работу, Зарплата. Создать массив обьектов. Вывести: a) Список работников, стаж работы которых на данном предприятии превышает заданное число лет; b) список работников, зарплата которых больше заданной; c) список работников, занимающих заданную должность. я начал работать над ним но... подробнее

Показать сообщение отдельно
Asya_inter
 Аватар для Asya_inter
5 / 5 / 0
Регистрация: 14.11.2014
Сообщений: 122
12.06.2016, 14:55     Работа со строками ( поиск, проверка)
Подскажите, как быстрее сделать? Какие вообще есть быстрые способы решения? Моё решение выходить за границу времени.
Слова
(Время: 1 сек. Память: 16 Мб Сложность: 48%)
Для шифрования слов с ними можно производить множество различных операций. Например, интересна такая операция: первые несколько букв заданного слова приписываются к его концу в обратном порядке, после чего удаляются из начала слова. При этом слово a1a2 … akak+1 … an переходит в слово ak+1 … anakak-1 … a1 (число k выбирается в диапазоне от 0 до n).

Для двух заданных слов требуется определить, можно ли применением описанной операции преобразовать первое слово во второе.

Входные данные

Входной файл INPUT.TXT состоит из двух строк - на первой из них записано исходное слово, а во второй - предполагаемый результат. Длины строк не превышают 50000 символов.

Выходные данные

В первой строке выходного файла OUTPUT.TXT выведите "Yes", если преобразование возможно, и "No", если нет. В случае положительного ответа во второй строке выведите k - длину перемещаемой части исходного слова k (из всех таких k выберите минимальный).


Моё решение:
C++
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
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main(){
    string Str2 = "";
    int i = 0, p=0;
    string Strok1 , Strok2; // <50000
    cin >> Strok1 >> Strok2;
    if (Strok1 == Strok2)
    {
        cout << "Yes" << endl << 0;
        return 0;
    }
        int rs = Strok1.size();
    for (i = 1; i <= rs/2; i++)
    {       
        Str2 = Strok1[i - 1] + Str2;
        if (Strok1[i - 1] != Strok2[rs - i])
        {
            cout << "No";
            return 0;
        }
            if (Strok1.substr(i, rs - i)+Str2 == Strok2)
            {
                cout << "Yes" << endl << i;
                return 0;
            }
    }
        cout << "No";
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru