@StrapusCactus

Как посчитать количество совпадающих символов в обоих строках?

Как посчитать количество символов, которые есть и в первой и во второй строке?

Моё решение:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <clocale>
#include <string>
using namespace std;

int main()
{
    setlocale(LC_CTYPE, "rus");
    string a = "1234";
    string b = "9321";
    int p = 0;
    for(int z = 0; z < 4; z++){
        if(a.find(b[z]) == 0){
            p += 1;
        }
    }
    cout << p << endl;
    return 0;
}


По идеи в примере мне надо чтоб получилось 2. Типо числа 1 и 2 есть в другой строке.

А сама идея такова:
1. Есть строка;
2. Пройтись по строке;
3. Посчитать и прибавить в переменную кол-во совпадений
строка 1234 = 1234 равно 4
строка 1239 = 5912 равно 3
строка 9876 = 6123 равно 1

Надеюсь норм описал проблему =)

Спасибо за помощь!
  • Вопрос задан
  • 2602 просмотра
Решения вопроса 2
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
#include <algorithm>
#include <iostream>
#include <set>
#include <string>

int main()
{
    std::string str1 = "just string with some numbers 124632";
    std::string str2 = "1234567890 i";
    std::set<std::string::value_type> setOfSymbolsInStr1(
        str1.begin(),
        str1.end());

    std::set<std::string::value_type> setOfSymbolsInStr2(
        str2.begin(),
        str2.end());

    std::set<std::string::value_type> intersection;
    std::set_intersection(
        setOfSymbolsInStr1.begin(),
        setOfSymbolsInStr1.end(),
        setOfSymbolsInStr2.begin(),
        setOfSymbolsInStr2.end(),
        std::inserter(intersection, intersection.begin()));

    std::cout << intersection.size() << std::endl;

    return 0;
}
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
3 тоже есть, так что правильный ответ 3. Ошибка тройная.
for(size_t z = 0; z < b.length(); z++){
        if(a.find(b[z]) != std::string::npos){

1. Индексы строк в STL беззнаковые, и компилятор может ругаться на сравнение знакового целого и беззнакового.
2. На что тут 4, если есть s.length()
3. Знак «не найдено» — std::string::npos.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы