Си диез / Говнокод #28425 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 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);
    }
}

решил выйти из выгорания изучением новой технологии. литкод оказался прикольной штукой..

Запостил: kcalbCube kcalbCube, (Updated )

Комментарии (46) RSS

  • Runtime: 135 ms, faster than 87.74% of C# online submissions for Removing Stars From a String.
    Memory Usage: 40.8 MB, less than 92.45% of C# online submissions for Removing Stars From a String.

    Как ускорить?
    Ответить
    • Использование foreach дало
      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.

      Больше и идей нет.
      Ответить
        • да уж как минимум ты мог бы массив в стек положить
          нахуя в куче он?
          Ответить
                • что будет, если я сохраню референс на 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 (как в го) а еще лучше нормальное управление мапятью
              Ответить
          • > ты мог бы массив в стек положить

            Я мог бы выпить море, я мог бы стать другим
            Ответить
        • Не факт. Может они компы обновили, а ротоёбы отправляли свой код в 2005 году.
          Ответить
          • Там ещё, видимо, от нагрузки на сервер зависит. У меня ког-дато одно и тоже решение с разным временем отрабатывало.
            Ответить
    • simd, модификацией исходной строки без аллокации новой через unsafe
      Ответить
      • Нельзя inplace.
        Был такой кста вариант, но при переёбке в string все benefits теряются
        public class Solution 
        {
            public string RemoveStars(string s) 
            {
                Span<char> str = stackalloc char[s.Length];
                int l = 0;
                
                foreach(var c in s)
                    if(c == '*')
                        --l;
                    else
                        str[l++] = c;
                
                return str.ToString().Substring(0, l);
            }
        }
        Ответить
        • > .ToString().Substring
          А чо, от Span нельзя за O(1) взять под-спан (один индекс поменять) и не коньструировать лишнюю строку?
          Ответить
            • а он скопирует или сделает реальный вью?
              Ответить
              • span сам по сабе - вью. Слайсы просто возвращают более узкие вью. А вот ToString сделает полноценную строку в куче, как требует возвращаемое значение.
                Ответить
                • >span сам по сабе - вью.
                  Спасибо, я догадался. Было бы очент страанно, если бы он копировать нижележащий массив.

                  Мой вопрос был про строку. Если чары туда копируются, то это уже не (1), а (N) же, правда не длина всей строчки, а лишь (0, l)

                  Теоретически, строка могла бы содержать два указателя на куски слайса, но видимо она так не делает
                  Да и слайс у нас со стекового значения (пришлось бы тогда перекладывать его в кучу, видимо)
                  Да, проще скопировать
                  Ответить
            • Медленнее и по памяти хуже. Скорее всего шарпы не оч оптимизированы для стекоёбства.
              Ответить
        • >stackalloc

          ну вот, уже и в C#

          лет через двадцать и в джву завезут

          а пока нельзя. Всё таки понятия стека и кучи -- сложные, большинство джава программистов с ними пока не знакомо...
          Ответить
  • Чувак накреативил названий своему freeware как не в себя. А я чуть его поделку не удалил, потому что в Version Info какая-то хуита.

    Doro - Free PDF Printer
        Lacey - Free Music & Video Downloader
        Spencer - Start Menu for Windows 10
        Howard - Email Notifier
        Conroe - Calendar Notifier
        Redwood - Extract Resources
        York - Network Traffic Trace
        Seaside - Start multiple Skype sessions
        Malden - See users Skype status
        Skype Focus Fix
        Flash Builder/Flash Player
        Compton - Storage Device Info
        Temple - USB Device Info
        USB ID Database
        Trion - Serial Port Terminal
        Grand - Sensors Viewer
        Homedale - WLAN Monitor
        Bennett - Bluetooth Monitor
        Bedford - Bluetooth Smart Info
        PortScan
        Carroll - Resolution Per User
        SpyEx - Windows Messages
        Parkdale - SpeedTest
        Rimhill - Limit CD-ROM Speed
        CDInfo
        Richmond - NFC/RFID Reader
        Auburn - Earnings Notifier
        Medford - Modbus Viewer
        Banks - BACnet Viewer
        Sherwood - Simple SCADA
        Bear - GDI/User Usage
        Prey Helper
        Samsung EI-AN900 Viewer
        Yale - Network Usage
        Norwood - CPU Usage Graph
        Nassau - Network Info
        Royal - RSS Reader
        Newfield - News
        CPU Grab Ex
        KMZ/KML/GPX/TCX Track Viewer
        Pictures on Map
        VBB Info
        Corona Virus Disease Map
        Monkeypox Outbreak Map
        VisualCVS
        mod_auth_msfix
        RequestTrace - Trace IRP’s
        NetChat
        Quartz - Dialin & DynDns
        CheckSum - PE Header
        PE Header Patcher
        PM_SZ_OS
        SZ_OS
        Hunter
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8