Поиск совпадающих букв в строке в одинаковых местах

Мне нужен код для сравнения двух строк: word и ptw. Обе строки содержат только одно слово, имеют одинаковую длину и одинаковый регистр. Код должен проверить первый символ обоих слов и посмотреть, совпадают ли они, и он будет делать это до конца слова. Затем он выведет количество совпадающих букв (мне не нужно знать совпадающие буквы).

Пример: если word равно windows, а ptw равно winowes, должно выводиться 4, поскольку w, i, n и s совпадают.

Я пробовал следующее, однако он не проверяет позиции:


string matchingletters(string word, string ptw) {

    string result = "";
    sort(begin(word), end(word));
    sort(begin(ptw), end(ptw));
    std::string intersection;
    std::set_intersection(begin(word), end(word), begin(ptw), end(ptw),
        back_inserter(intersection));
    string mlr = to_string(intersection.length());
    result = mlr + result;
    cout << result << endl;
    return result;

}

Результат, который это дает, когда word есть kanton, а ptw есть balkon есть 4. Он считается k, хотя k находится в 0 позиции в слове и 3 позиции в ptw, поэтому они не находятся в одной и той же позиции и не должны учитываться.

1. Не домашняя работа 2. Я уже знаю, что могу сравнивать по одному, но мне нужна более упрощенная версия, возможно, с использованием итераторов 3. Это функция моего кода.

ozan esici 12.12.2020 23:18

@ozanesici: Aseroids With Wings означает, что вам нужно указать, что вы пробовали и на чем застряли. Вы должны прочитать Как задать хороший вопрос (Справочный центр Stack Overflow).

Lakshya Raj 12.12.2020 23:20

Я просто хочу узнать более правильный способ сделать это, и, поскольку я не смог найти никаких других после того, как посмотрел его и попробовал самостоятельно, я разместил его здесь.

ozan esici 12.12.2020 23:21

Я отредактировал сообщение с тем, что я пробовал.

ozan esici 12.12.2020 23:24

@LakshyaRaj Я ценю предупреждения и не тороплюсь со мной, поскольку я новичок на сайте.

ozan esici 12.12.2020 23:25

Что вы подразумеваете под "он не проверяет позиции"? Дайте полную информацию о вашей проблеме.

Asteroids With Wings 12.12.2020 23:26

Я отредактировал пост с примером запуска @AsteroidsWithWings

ozan esici 12.12.2020 23:29

Я не понимаю, как ваш код относится к заявленной проблеме. Вы должны проверять соответствие символов «в одних и тех же местах», но вы сортируете оба ввода в самом начале своего алгоритма, немедленно теряя эти позиции. Я предлагаю вам решить задачу с помощью карандаша и бумаги.

Asteroids With Wings 12.12.2020 23:30

@ozanesici : Будут ли два слова одинаковой длины?

Lakshya Raj 12.12.2020 23:32

да @LakshyaRaj

ozan esici 12.12.2020 23:33

Теперь я вижу свою ошибку @AsteroidsWithWings

ozan esici 12.12.2020 23:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
11
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

unsigned matchingletters(const std::string& word, const std::string& ptw) {
    assert(word.size() == ptw.size());

    unsigned count{0};
    for (size_t i = 0; i < word.size(); ++i) {
        if (word[i] == ptw[i])
            count++;
    }

    return count;
}

Другие вопросы по теме