Назад к вопросам
Intern
5
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
Функция deleteP на Go удаляет из строки все вхождения смайликов в формате ":-)))" или ":-((" с любым количеством повторяющихся скобок ")" или "(" после ":-".
Алгоритм:
- Идём по строке посимвольно.
- Если встречаем последовательность ":-" и далее идут одинаковые скобки ")" или "(", то пропускаем их все.
- Иначе добавляем символ в результат.
Пример работы:
func deleteP(str string) string {
n := len(str)
res := make([]byte, 0, n)
i := 0
for i < n {
if i+2 < n && str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') {
ch := str[i+2]
i += 3
for i < n && str[i] == ch {
i++
}
} else {
res = append(res, str[i])
i++
}
}
return string(res)
}
Например:
"ab :-)"->"ab ""ab :-)))"->"ab ""ab :-)))("->"ab (""ab ):-)"->"ab )"":-)"->""