Unit tests the SuffixArrayX data type. @param args the command-line arguments
(String[] args)
| 233 | * @param args the command-line arguments |
| 234 | */ |
| 235 | public static void main(String[] args) { |
| 236 | String s = StdIn.readAll().replaceAll("\n", " ").trim(); |
| 237 | SuffixArrayX suffix1 = new SuffixArrayX(s); |
| 238 | SuffixArray suffix2 = new SuffixArray(s); |
| 239 | boolean check = true; |
| 240 | for (int i = 0; check && i < s.length(); i++) { |
| 241 | if (suffix1.index(i) != suffix2.index(i)) { |
| 242 | StdOut.println("suffix1(" + i + ") = " + suffix1.index(i)); |
| 243 | StdOut.println("suffix2(" + i + ") = " + suffix2.index(i)); |
| 244 | String ith = "\"" + s.substring(suffix1.index(i), Math.min(suffix1.index(i) + 50, s.length())) + "\""; |
| 245 | String jth = "\"" + s.substring(suffix2.index(i), Math.min(suffix2.index(i) + 50, s.length())) + "\""; |
| 246 | StdOut.println(ith); |
| 247 | StdOut.println(jth); |
| 248 | check = false; |
| 249 | } |
| 250 | } |
| 251 | |
| 252 | StdOut.println(" i ind lcp rnk select"); |
| 253 | StdOut.println("---------------------------"); |
| 254 | |
| 255 | for (int i = 0; i < s.length(); i++) { |
| 256 | int index = suffix2.index(i); |
| 257 | String ith = "\"" + s.substring(index, Math.min(index + 50, s.length())) + "\""; |
| 258 | int rank = suffix2.rank(s.substring(index)); |
| 259 | assert s.substring(index).equals(suffix2.select(i)); |
| 260 | if (i == 0) { |
| 261 | StdOut.printf("%3d %3d %3s %3d %s\n", i, index, "-", rank, ith); |
| 262 | } |
| 263 | else { |
| 264 | // int lcp = suffix.lcp(suffix2.index(i), suffix2.index(i-1)); |
| 265 | int lcp = suffix2.lcp(i); |
| 266 | StdOut.printf("%3d %3d %3d %3d %s\n", i, index, lcp, rank, ith); |
| 267 | } |
| 268 | } |
| 269 | } |
| 270 | |
| 271 | } |
| 272 |