Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/47: Рейтинг темы: голосов - 47, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112

Проверить, является ли строка S1 анаграммой строки S2

07.03.2018, 11:44. Показов 10221. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Я решая такую задачу:

Кликните здесь для просмотра всего текста
Cтрока S1 называется анаграммой строки S2, если она получается из S2 перестановкой символов. Даны строки S1 и S2. Напишите программу, которая проверяет, является ли S1 анаграммой S2.

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

Первая строка входного файла INPUT.TXT содержит строку S1, вторая - S2. Обе строки состоят только из прописных букв английского алфавита. Строки не пусты и имеют длину не больше 100000 символов.

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

В выходной файл OUTPUT.TXT выведите YES, если S1 является анаграммой S2, и NO - в противном случае.



Примеры:

1. abba baba
Выводим YES.
2. bbaa abbb
Выводим NO.
И я написал вот такой код:

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
#include <iostream>
#include <string>
using namespace std;
string sort(string st)
{
    for (int i = 0; i < st.length(); i++)
        for (int j = 0; j <st.length(); j++)
        {
            int a = int(st[j]);
            int b = int(st[j+1]);
            if (a > b) swap(st[j],st[j+1]);
        }
    return st;
}
int main()
{
    string a,b;
    cin>>a>>b;
    a = sort(a);
    b = sort(b);
    if(a == b) cout << "YES";
    else cout << "NO";
    return 0;
}
Я отправил код на сайт acmp(задача из acmp), и у меня написало: превышение времени на 3 тесте. Что у меня не так? Как можно эту задачу решить другим способом, и при этом проходить по времени? Напишите мне, пожалуйста, код.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2018, 11:44
Ответы с готовыми решениями:

Проверить, является ли одна строка анаграммой для другой строки
прошу помощи с кодом в коде я сделал следующее : - привел строки к нижнему регистру - убрал пробели и знаки пунктуации дальше...

Является ли исходная строка символов анаграммой
2. Определите, является ли исходная строка символов анаграммой (читается одинаково с начала и с конца).

Проверить, является ли одно слово анаграммой второго
Всем доброго времени суток! Помогите начинающему. Есть 2 слова , которые заносятся в 2 массива из файла.Задача: проверить является ли одно...

5
 Аватар для igorrr37
2872 / 2019 / 991
Регистрация: 21.12.2010
Сообщений: 3,754
Записей в блоге: 9
07.03.2018, 12:31
сортировка пузырьком слишком медленная
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
 
int main()
{
    string a, b;
    cin >> a >> b;
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    if (a == b) cout << "YES";
    else cout << "NO";
    return 0;
}
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
07.03.2018, 12:49
msz301005, можно посчитать количество вхождений каждого символа в строку, что нибудь вроде:
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
#include <iostream>
#include <string>
#include <array>
     
     
std::size_t const symCount = 'z' - 'a' + 1;
     
std::array<std::size_t, symCount> countSyms(std::string const& str) {
   std::array<std::size_t, symCount> counts { };
     
   for (auto const ch : str) {
      ++counts[ch - 'a'];
   }
     
   return counts;
}
     
     
int main() {
   std::string a,b;
   std::cin >> a >> b;
     
   auto const aCounts = countSyms(a);
   auto const bCounts = countSyms(b);
     
   if(aCounts == bCounts) std::cout << "YES";
   else std::cout << "NO";
}
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
13.03.2018, 18:28  [ТС]
igorrr37, А функция sort не будет работать, если строка будет состоять из букв

Добавлено через 15 секунд
А там в тестах строки из букв
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
14.03.2018, 05:17
Цитата Сообщение от msz301005 Посмотреть сообщение
igorrr37, А функция sort не будет работать
Будет.
0
0 / 0 / 1
Регистрация: 18.02.2018
Сообщений: 112
14.03.2018, 16:21  [ТС]
Новичок, спасибо, я не знал, тогда эту задачу просто решить, зря мучился
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2018, 16:21
Помогаю со студенческими работами здесь

Проверить является ли строка 2 подстрокой строки 1
Нужно написать код подстроки используя substr простым языком если возможно П.5.18.Правил Запрещено размещать задания и решения в виде...

Даны строки S1 и S2. Проверить, является ли строка S1 префиксом S2
Даны строки S1 и S2. Проверить, является ли строка S1 префиксом S2. Код на C. Желательно не сложный или с объяснениями

Даны две строки s1 и s2 проверить является ли строка s1 префиксом s2
Очень надеюсь на помощь

Строки. написать программу и проверить. является ли данная строка полиндромом
Является ли данная строка полиндромом (полиндром - строка, которая читается с двух сторон одинаково, например, 1.2.3.2.1)

Функция: проверить, является ли строка str1 подстрокой строки str2
Доброго времени суток) кому не составит большого труда, прошу помочь с заданием) Написать функцию ISSUBSTR(str1,str2), которая выясняет,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru