Набросал на javascript свой вариант конкретно для случая с подобными строками. Быть может пригодится.
- /**
- * strings - массив исходных строк
- * result - массив уникальные последовательности символов
- */
- var strings = [
- 'www.youtube.com/user/grickle#p/u/dasdas/0/tuhZuMl9StM',
- 'www.youtube.com/user/grickle#p/u/dasd as/3/hnvkIQHv0OQ',
- 'www.youtube.com/user/grickle#p/u/vcx bxcv/7/cjT2Huux34g',
- 'www.youtube.com/user/grickle#p/u/54354/2/Osex3fXi_OA'
- ],
- temp = [],
- result = [],
- repeat = {},
- newStrings = {};
-
- /**
- * Обходим исходный массив и разбиваем его по повторяющимся символам,
- * здесь это слеши. Создаём объект с ключами из уникальных строк, а
- * значения - индексы этих строк в разделённой оригинальной строке.
- * одинаковые же части сохраняем в массив повторяющихся.
- */
- for(var i = 0; i<strings.length; i++) {
- temp[i] = strings[i].split('/');
- result[i] = '';
- for(var j = 0; j<temp[i].length; j++) {
- if(temp[i][j] in newStrings) {
- repeat[temp[i][j]] = 1;
- }
- newStrings[temp[i][j]] = i;
- }
- }
-
- /**
- * Склеиваем уникальные части строки в одну.
- */
- for(var key in newStrings) {
- if(!(key in repeat))
- result[newStrings[key]]+=(result[newStrings[key]]!=''?'/':'')+key;
- }