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

Является ли строка палиндромом без учета пробелов

13.06.2020, 00:00. Показов 4443. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, нужно выяснить является ли строка палиндромом без учета пробелов. Не проходит все тесты, что я мог не учесть?

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
#include<iostream>
#include<string>
using namespace std;
bool IsPalindrom(string s) {
    for (int i = 0; i < s.size() / 2; ++i) {
        if (s[i] != s[s.size() - i - 1]) {
            return false;
        }
    }
    return true;
}
string ExtractSpaces(string s){
for (int i = 0; i < s.length(); i++)
   {
      if (s[i] == ' ')
      {
         for (int j = i; j < s.length(); j++)
            s[j] = s[j+1];
      }
   }
}
int main (){
    string s;
    cin >> s;
    cout << IsPalindrom(ExtractSpaces(s));
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2020, 00:00
Ответы с готовыми решениями:

Проверить, является ли введенная строка палиндромом без учета пробелов
Дана строка, состоящая из строчных латинских букв и пробелов. Проверьте, является ли она...

Проверить, является ли строка палиндромом. С рекурсией и без рекурсии
В один код вместе написать с рекурсией и без рекурсии. Проверить строку на палиндрома? Это без...

Проверка, является ли строка палиндромом (без учета пробелов)
Только начал работать со строками, помогите, пожалуйста Дана строка, состоящая из строчных...

Проверить, является ли строка палиндромом без учета пробелов
Дана строка, состоящая из строчных латинских букв и пробелов. Проверьте, является ли она...

4
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
13.06.2020, 01:37 2
Лучший ответ Сообщение было отмечено MikhailEl как решение

Решение

MikhailEl, Попробуйте этот вариант (исправьте под Вашу задачу) , делал для e-olymp №2162. Палиндром. Зачитано на 100%

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string str, temp;
    std::getline(std::cin, str);
    str.erase(remove(str.begin(), str.end(), ' '), str.end());
    temp = str;
    std::reverse(temp.begin(), temp.end());
 
    if (temp == str) { std::cout << "YES" << std::endl; }
    else { std::cout << "NO" << std::endl; }
    return EXIT_SUCCESS;
}
1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
13.06.2020, 02:18 3
Цитата Сообщение от MikhailEl Посмотреть сообщение
Не проходит все тесты, что я мог не учесть?
1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
string ExtractSpaces(string s) 
{
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] == ' ')
        {
            for (int j = i; j < s.length(); j++)
                s[j] = s[j + 1];
        }
    }
    
}
не возвращает значений
2. функция сделана не корректно, лучше сделайте s.erase(s.begin() + i);

Добавлено через 3 минуты
Попробуйте исправить вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
string ExtractSpaces(string s) 
{
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] == ' ')
        {
            s.erase(s.begin() + i);
            i--;
        }
    }
    return s;
    
}
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
13.06.2020, 03:13 4
Логичнее было бы не извращаться со входящей строкой, а просто скипать символы, не участвующие в проверке.
C++
1
2
3
4
5
6
7
8
9
10
bool isPalindrome(const std::string& str) {
    auto lhs(str.begin()), rhs(--str.end());
    while (lhs < rhs) {
        if (!std::isalpha(*lhs)) ++lhs;
        else if (!std::isalpha(*rhs)) --rhs;
        else if (std::tolower(*lhs) != std::tolower(*rhs)) return false;
        else ++lhs, --rhs;
    }
    return true;
}
0
0 / 0 / 0
Регистрация: 12.06.2020
Сообщений: 8
13.06.2020, 14:04  [ТС] 5
Прошло все тесты, спасибо
0
13.06.2020, 14:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2020, 14:04
Помогаю со студенческими работами здесь

Написать программу, определяющую является ли данная строка палиндромом (без учета регистра)
Написать программу, определяющую является ли данная строка палиндромом (без учета регистра) Все...

Написать программу, определяющую является ли данная строка палиндромом (без учета регистра)
Задание: 1.Написать программу, определяющую является ли данная строка палиндромом (без учета...

Определить, является ли данная строка палиндромом, не учитывая пробелов
Прошу помочь решить 5 задач в Free pascal-е: 3. Определить, является ли данная строка...

Проверить, является ли строка палиндромом после удаления из нее всех пробелов
Вводятся произвольная строка.Проверить является ли она перевертышем(палиндромом) после удаления из...

Напишите программу, которая определяет, является ли введённое слово (без пробелов) палиндромом
Напишите программу, которая определяет, является ли введённое слово (без пробелов) палиндромом, то...

Определить функцию palindrom, которая дает ответ, является ли предложение без пробелов палиндромом, то есть перевертышем
Дано предложение (например, «довод», «деревянный», «Saippuakivikauppias», «А роза упала на лапу...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru