Ради интереса я прочитал эти вопросы интервью и попытался найти решения в обоих C # и F #, и я изо всех сил пытаюсь сделать следующее на идиоматическом F # без изменения логического значения или использования регулярного выражения:
Вам дана строка слов, содержащая один или несколько символов $, например: "foo bar foo $ bar $ foo bar $" Вопрос: Как удалить второе и третье вхождения $ из заданной строки ?
Мое императивное решение F # с мутацией:
let input = "foo bar foo $ bar $ foo bar $ "
let sb = new StringBuilder()
let mutable first = true
let f c=
if c='$' && first then first<-false
else sb.Append(c) |> ignore
input |> Seq.iter f
(И С # один):
var input = "foo bar foo $ bar $ foo bar $ ";
var sb = new StringBuilder();
bool first = true;
input.ForEach(c => {
switch (c)
{
case '$' when first: first = false; break;
default: sb.Append(c);break;
};
});