Найти позицию первой повторяющейся цифры во вводимом числе

Вводится целое число. В числе могут быть две подряд идущие одинаковые цифры, например, 1234456 – здесь 4. А может и не быть. Вывести на экран позицию первого из повторяющихся чисел, с учетом того, что первое левое это – 0 позиция. То есть в приведенном выше примере цифра 1 стоит на 0 позиции, цифра 2 на первой позиции и т.д. Так вот программа должна выдать позицию первой четверки – 3 позиция в нашем примере.


Ответы (1 шт):

Автор решения: DaraHessesh

Можно так сделать. Если в строке есть повторы, то выведет.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string str;
    getline(cin, str);
    for (int i=0; i<str.length()-1; i++){
        for (int j=i+1; j<str.length(); j++){
            if (str[i] == str[j]){
                cout<<i;
                return 1;
            }
        }
    }
    cout<<"No";
    return 0;
}

Подключаются библиотеки ввода-вывода и для строк.
Задаем строку, записываем ее с клавиатуры через консоль.
Первый цикл идет от 0 элемента до предпоследнего (str.length()-1). Второй цикл идет от элемента, который следует за тем, что в первом цикле, и до последнего. Допустим, если в первом цикле i=5, т.е. 6 элемент (т.к. начинается с 0), то второй цикл пойдет от 7 элемента и до конца.
Получается, что мы берем первый элемент, и смотрим, есть ли такие же. Если нашли, программа выводит его номер и заканчивается. Если во всей строке такого элемента нет, то берем второй элемент и смотрим, есть ли он. И так до конца. Если мы не нашли вообще ни одного повтора, выведет "No" и программа завершится.

UPD: Возможно я не так поняла задание, так что вот еще один код
Эта программа будет выводить результат только когда два одинаковых символа идут подряд.

#include <iostream>
#include <string>
using namespace std;
int main(){
    string str;
    getline(cin, str);
    for (int i=0; i<str.length()-1; i++){
        if (str[i] == str[i+1]){
            cout<<i;
            return 1;
        }
    }
    cout<<"No";
    return 0;
}

Тут через цикл идет проход по строке, и если друг за другом идут одинаковые символы, то оно выведет позицию первого из пары.

→ Ссылка