- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
public class Solution
{
public string RemoveStars(string s)
{
char[] str = new char[s.Length];
int l = 0;
for(int i = 0; i < s.Length; ++i)
if(s[i] == '*')
--l;
else
str[l++] = s[i];
return new string(str, 0, l);
}
}
Memory Usage: 40.8 MB, less than 92.45% of C# online submissions for Removing Stars From a String.
Как ускорить?
Runtime: 122 ms, faster than 93.40% of C# online submissions for Removing Stars From a String.
Memory Usage: 40.4 MB, less than 99.06% of C# online submissions for Removing Stars From a String.
Больше и идей нет.
нахуя в куче он?
через ансейф рази чо
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/stackalloc
stackallocчить без ансейф контекста можно ТОЛЬКО массивы, и работать с ними только через Span и ReadOnlySpan (долбоебы не могут в конст)
У спанов таике ограничения
"ref struct" (и эти люди ржут над glvalue) so
that they can't be boxed, they can't be assigned to variables of type Object, dynamic or to any interface type, they can't be fields in a reference type, and they can't be used across await and yield boundaries. In addition, calls to two methods, Equals(Object) and GetHashCode, throw a NotSupportedException.
То есть с ними нельзя делать примерно ничего, да еще и Варвару Лискову обидели
То есть это такой воюний костыль из говна и палочек по мерзости схожий с IDisposable.
Нужен хотя бы escape analysis (как в го) а еще лучше нормальное управление мапятью
Я мог бы выпить море, я мог бы стать другим
> less than 99.06%
Какие же там ротоёбы сидят...
Был такой кста вариант, но при переёбке в string все benefits теряются
А чо, от Span нельзя за O(1) взять под-спан (один индекс поменять) и не коньструировать лишнюю строку?
Починил.
Спасибо, я догадался. Было бы очент страанно, если бы он копировать нижележащий массив.
Мой вопрос был про строку. Если чары туда копируются, то это уже не (1), а (N) же, правда не длина всей строчки, а лишь (0, l)
Теоретически, строка могла бы содержать два указателя на куски слайса, но видимо она так не делает
Да и слайс у нас со стекового значения (пришлось бы тогда перекладывать его в кучу, видимо)
Да, проще скопировать
ну вот, уже и в C#
лет через двадцать и в джву завезут
а пока нельзя. Всё таки понятия стека и кучи -- сложные, большинство джава программистов с ними пока не знакомо...
Ват?
А точно код рабочий? Какая задача?