Имам програма на Java, която изчислява разстоянието на Левенщайн между два низа. Използвам този метод, за да го направя:
public static int levDistance(String s, int len_s, String t, int len_t) {
if (len_s == 0)
return len_t;
if (len_t == 0)
return len_s;
int cost = 0;
if (s.charAt(len_s - 1) == t.charAt(len_t - 1))
cost = 0;
else
cost = 1;
return Math.min(Math.min(
levDistance(s, len_s - 1, t, len_t) + 1,
levDistance(s, len_s, t, len_t - 1) + 1),
levDistance(s, len_s - 1, t, len_t - 1) + cost);
}
Както подсказва заглавието, трябва да получа всяка стъпка в тази процедура. Наистина не ме интересува как се връща (може да бъде разделен с нов ред, в списък с масиви и т.н.) или в какъв ред е, само че един знак се променя на всяка стъпка.
Примери:
distance("saturday", "sauterdai"); -> "saturday", "sauterday", "sauterdai"
distance("algorithm", "algurthm") -> "algorithm", "algorthm", "algurithm"
distance("stackoverflow", "mathoverflow") -> "stackoverflow", "tackoverflow", "tckoverflow", "tkoverflow", "toverflow", "mtoverflow", "matoverflow", "mathoverflow"
Java
, а не наpseudo-code
- person CKing   schedule 30.05.2015