У меня есть эта проблема
strArr is ["aaabaaddae", "aed"], то самая маленькая подстрока N, содержащая символы a, e, и d - это "dae", расположенная в концестрока.Так что для этого примера ваша программа должна вернуть строку dae
strArr is ["aabdccdbcacd", "aad"], тогда наименьшая подстрока N, содержащая все символы в K, будет "aabd", которая расположена вначало строки.Оба параметра будут строками длиной от 2 до 50 символов, и все символы K будут находиться где-то в строке N. Обе строки будут содержать только строчные буквенные символы.
я использовал js, но теперь я пытаюсь использовать swift
Ввод: ["ahffaksfajeeubsne", "jefaa"] Вывод: "aksfaje"
это работает с js
function MinWindowSubstring(strArr){
var min = null;
var n = strArr[0];
var k = strArr[1];
for (var i = 0; i < n.length; i++) {
for (var j = i + 1; j <= n.length; j++) {
var sub = n.slice(i, j);
if(checkK(sub, k)){
if (min === null || sub.length < min.length){
min = sub;
}
}
}
}
return min;
}
function checkK(sub, k){
var h = k.split('');
for (var i = 0; i < sub.length; i++) {
var char = sub[i];
var index = h.indexOf(char);
if(index > -1){
h.splice(index, 1);
}
}
if(h.length === 0){
return true;
} else {
return false;
}
}
console.log(MinWindowSubstring(["aabdccdbcacd", "aad"])); // aabd
console.log(MinWindowSubstring(["ahffaksfajeeubsne", "jefaa"])); // aksfaje
это мой код с swift
func indexChar(str:String, char: Character) -> Int
{
let index = str.firstIndex(of: char)
if index?.encodedOffset != nil
{
return (index?.encodedOffset)!
}
else
{
return 0
}
}
var arrStr = ["ahffaksfajeeubsne", "jefaa"]
var str1 = arrStr[0]
var str2 = arrStr[1]
var arrIndex = [Int]()
for letra in str2
{
var index = indexChar(str: str1, char: letra)
arrIndex.append(index)
}
print(String(Array(str1)[arrIndex.min()!...arrIndex.max()!]))
с js
Ввод: ["ahffaksfajeeubsne", "jefaa"] Вывод: "aksfaje"
с быстрым вводом ["ahffaksfajeeubsne", "jefaa"] выводом ahffaksfaje