Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Есть тысяча строк. Как проверить, нет среди них повторяющихся?

Дима Сорокин Ученик (78), на голосовании 12 лет назад
Дополнен 13 лет назад
Может как-то через notepad++ ?
Дополнен 13 лет назад
А если я не знаю ничего кроме php, и то хреново?
Голосование за лучший ответ
RigFox Гуру (3374) 13 лет назад
Для такой задачи можно быстренько сварганить программку на delphi
Я бы так поступил
Если это реальная задача то могу помочь
То плохо php не очень подходит для работы с текстом (да еще если знаешь хреново)
А мне этот вопрос нравиться. Неплохие способы люди подсказывают (точнее алгоритмы)
Ser@ Мастер (1782) 13 лет назад
идея:
1) сравниваем только строки равной длины
2) можно сделать следующее: каждому символу алфавита придать какое-нибудь значение (например, номер под которым он стоит в алфавите) , складывать значения каждого символа и сравнивать строки с равной такой суммой
3) если сравнения 1) и 2) дают положительный результат - проверяем строку посимвольно

такой алгоритм довольно быстр
Капитан Гугл Искусственный Интеллект (146199) 13 лет назад
Тупой вариант: попарно сравнить.
Вариант поумнее: для каждой строки вычислять хэш, например, сумму кодов символов, и если такой суммы еще не было - не сравнивать; но тогда придется держать хитрую таблицу хэшей и списоков.
---
так вопрос не по программированию, а практический? Отсортируй в Экселе и сравнивай соседей. Если сам не разберешься, как - пиши.
Romnet Мыслитель (7924) 13 лет назад
Можно за миллион сравнений (1000 по 1000) сравнить все строки. Для современных компьютеров это мгновенье, но все же некрасиво.
Можно отсортировать их каким-нибудь алгоритмом (только не пузырьком - он медленный) и пройтись по массиву на предмет одинаковых подряд строк.
Девочка_Красавец Гуру (3537) 13 лет назад
если это обычная задача писать прогу не надо. для этого можно юзануть:
1. старый добрый эксель, алгоритм такой:
1) сортируется столбец значений (если нужно сохранить порядок проиндексируй строки и их в сортировку добавь и будет щясье)
2) на каждой строке пишешь примерно такой код: "сравнить текущую строку с предыдущей строкой", если одинаковы то с текущем
a2 = строка1
a3 = строка2
a4 = строка3
a5 = строка3
a6 = строка3
a7 = строка4
b2 = =если (A2=A1;B1+1;1)
b3 = =если (A3=A2;B2+1;1)
b4 = =если (A4=A3;B3+1;1)
b5 = =если (A5=A4;B4+1;1)
b6 = =если (A6=A5;B5+1;1)
b7 = =если (A7=A6;B6+1;1)
эффект будет такой, если строка повторяется то где то цифра будет больше или равна 2. если один означает что такая строка одна на весь список.
2. также можно использовать аксесс, там делается все движением мыши. выбирается выборка повторяющихся строк, пару кликов и видно кто сколько раз повторяется. для этого нужен один столбец, без ключа. это чтобы узнать сколько чего.
Источник: Я!
Ampersand Гуру (2881) 13 лет назад
ПОИСК ПОВТОРОВ В EXCEL.
A1:A10000 - это ваш столбец. В нем надо найти повторы и подсчитать ск. раз повторяется.
Копируем эту формулу:
=СЧЁТЕСЛИ (A$1:A$10000;A1)
и вставляем в ячейку B1
Выделяем ячейку В1, цепляемся мышкой за правый нижний уголок и тянем вниз до конца
Числа в столбце "В" указывают на кол-во повторов
Указанный способ работает с любыми данными (числами, буквами и текстом)
Похожие вопросы