Knuth Morris Pratt substring search algorithm Implementation in Kotlin
![Image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigb8rNQs5e2RpBJ_ckYRQ8dHcCuKj1CPQaFf2lE0NFGADQgB4uY2Dcf1Xq2b4puZ802cymb_uWirMVNyrSAMiRg7Q1Ol2NQmO6MeSMdHnq_B7w6kYROh3bfoP1K-4lZ67StTqq4qPqgROm/s1600/1.jpg)
Clash Royale CLAN TAG #URR8PPP .everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0; up vote 1 down vote favorite Below you can find a Kotlin based implementation of the Knuth Morris Pratt substring search algorithm. Here is the corresponding Wikipedia article. class KnutMorrisPrat(R: Int, private val pat: String) private val m = pat.length private val dfa: Array<Array<Int>> = Array(R) Array(m) 0 constructor(pat: CharArray) : this(256, String(pat)) constructor(pat: String) : this(256, pat) init dfa[pat[0].toInt()][0] = 1 var x = 0 var j = 1 while(j < m) (0 until R).forEach c -> dfa[c][j] = dfa[c][x] // Copy mismatch cases. dfa[pat[j].toInt()][j] = j + 1 // Set match case. x = dfa[pat[j].toInt()][x] // Update restart state. j++ // Move to next character in pattern fun search(txt: String): Int return doSearch(txt, 0) fun search(txt: String, start: Int): Int return doSearch(txt, start) private...