I have a two strings:
string1 - hello how are you
,
String2 - olo
(including space character)
Output: lo ho
( hello
This is a example of implementation with JavaScript. The logic is similar as @Aprillion wrote above.
DEMO : http://jsfiddle.net/ZB6vm/4/
var s1 = "hello how are you";
var s2 = "olo";
var left, right;
var min_distance;
var answer = "";
// make permutation recursively
function permutate(ar, arrs, k) {
// check if the end of recursive call
if (k == arrs.length) {
var r = Math.max.apply(Math, ar);
var l = Math.min.apply(Math, ar);
var dist = r - l + 1;
if (dist <= min_distance) {
min_distance = dist;
left = l;
right = r;
}
return;
}
for (var i in arrs[k]) {
var v = arrs[k][i];
if ($.inArray(v, ar) < 0) {
var ar2 = ar.slice();
ar2.push(v);
// recursive call
permutate(ar2, arrs, k + 1);
}
}
}
function solve() {
var ar = []; // 1-demension array to store character position
var arrs = []; // 2-demension array to store character position
for (var i = 0; i < s2.length; i++) {
arrs[i] = [];
var c = s2.charAt(i);
for (var k = 0; k < s1.length; k++) { // loop by s1
if (s1.charAt(k) == c) {
if ($.inArray(k, arrs[i]) < 0) {
arrs[i].push(k); // save position found
}
}
}
}
// call permutate
permutate(ar, arrs, 0);
answer = s1.substring(left, right + 1);
alert(answer);
}
solve();
Hope this helps.