Матч
21, Почта (PostOffice)
Строки address1 и address2
содержат адреса домов. Адреса считаются одинаковыми, если они совпадают после
удаления из них пробелов. Заглавные и прописные буквы считаются одинаковыми.
Если адреса одинаковы, вернуть -1. Иначе вернуть номер наименьшего индекса, в
котором отличаются адреса (после удаления пробелов). Нумерация индексов
начинается с 0.
Класс: PostOffice
Метод: int
matchAddress(string address1, string address2)
Ограничения:
address1 и address2 содержат от 0 до 50
символов ‘a’ – ‘z’, ‘A’ – ‘Z’, ‘0’ – ‘9’.
Вход. Две строки address1 и address2.
Выход. Индекс первого несовпадения строк согласно описанному в
условии алгоритма, или -1 при совпадении адресов.
Пример входа
address1 |
address2 |
"145 West 44th Street" |
"145 west 44 th street" |
" Wall Street" |
" Waal
Street" |
"Wall" |
"WallStreet" |
Пример выхода
-1
2
4
РЕШЕНИЕ
обработка строк
Удалим из адресов address1 и address2 пробелы и занесем их соответственно в строки а и b.
При этом все буквы преобразуем в верхний регистр. Если полученные строки
одинаковы (совпадают), возвращаем -1. Иначе ищем индекс первого несовпадения и
возвращаем его.
ПРОГРАММА
#include <cstdio>
#include <string>
using namespace std;
class PostOffice
{
public:
int matchAddress(string address1, string address2)
{
int i;
string a, b;
for(i = 0; i < address1.size(); i++)
if (address1[i] != ' ') a += tolower(address1[i]);
for(i = 0; i < address2.size(); i++)
if (address2[i] != ' ') b += tolower(address2[i]);
if (a == b) return
-1;
for(i = 0; a[i] == b[i]; i++);
return i;
}
};