Алгоритм касаи

Алгоритм касаи

Алгоритм касаи

Алгоритм Касаи — алгоритм, который ищет самый длинный общий префикс из поданных на вход в лексиграфическом порядке массиве префиксов некоторой строки. (LCP — Longest Common Prefix)

Реализация алгоритма на языке Java.

import java.io.*;
import java.util.*;
import java.math.*;
 
public class Task {
 
	public static void main(String[] args) throws FileNotFoundException {
		Scanner InF = new Scanner(new File(«input.txt»));
		PrintWriter OutF = new PrintWriter(«output.txt»);
		String A = InF.nextLine(), P[] = new String[A.length()+1];
		for (int i = 0; i < A.length(); i++) {
			P[i+1] = A.substring(i);
		}
		P[0] = "";
		Arrays.sort(P);
		int Pos[] = new int[A.length()+1];
		for (int i = 1; i <= A.length(); i++) {
			Pos[i] = A.length() - P[i].length() + 1;
		}<br>
		int Rank[] = new int[A.length()+1];
		for (int i = 1; i <= A.length(); i++) {
			Rank[Pos[i]] = i;
		}<br>
		int H8[] = new int[A.length()+1];
		int h = 0;
		for (int i = 1; i <= A.length(); i++) {
			if (Rank[i] > 1) {
				int k = Pos[Rank[i]-1];
				while (((i+h-1)!=A.length())
						&&((k+h-1)!=A.length())
						&&(A.charAt(i+h-1) == A.charAt(k+h-1)))
					h++;
				H8[Rank[i]] = h;
				if (h > 0)
					h--;
			}
		}
		for (int i = 0; i <= A.length(); i++) {
			OutF.print(P[i]);
			OutF.print(" ");
			OutF.println(H8[i]);
		}
 
		InF.close();
		OutF.close();
	}
}




Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Алгоритм касаи" в других словарях:

  • Алгоритм Касаи — (Аримуры Арикавы Касаи Ли Парка) алгоритм, за линейное время находящий длины наибольших общих префиксов (англ. lcp, longest common prefix) у всех пар суффиксов данной строки, соседних в лексикографическом порядке (т.е. у всех соседних… …   Википедия

  • Касаи (значения) — Касаи: Касаи  приток реки Конго, протекает по Центральной Африке. Горнорудное государство Южное Касаи сепаратистское государственное образование, существовавшее на территории Республики Конго в 1960 1962 годах. Касаи, Нориаки  известный …   Википедия

  • Суффиксный массив — Суффиксный массив  лексикографически отсортированный массив всех суффиксов строки. Эта структура данных была разработана Джином Майерсом и Уди Манбером как более экономная альтернатива суффиксному дереву с точки зрения необходимой памяти.… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»