На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Как "быстро" меньшим кол-вом строк кода узнать что в строке одни нули? , Сабж
    Дорое время суток)

    Как быстро узнать что в строке одни нули?

    В
    delphi так
    ExpandedWrap disabled
      function TestStringsForZeros(const Source: string): Boolean;
      begin
        Result:= Source = StringOfChar('0', Length(Source));
      end;


    В
    python так
    ExpandedWrap disabled
      def TestStringsForZeros(s):
          return s == '0'*len(s)


    Вопрос: "Каким будет "данный код" в java
    или эквивалентный ему?"

    Заранее спасибо.
    Сообщение отредактировано: RusSun -
      ExpandedWrap disabled
        return string.chars().allMatch(symbol -> symbol == '0');
        >В delphi так

        Двойная работа, чтобы "быстро узнать" ????
          Цитата RusSun @
          Дорое время суток)

          Как быстро узнать что в строке одни нули?

          Скрытый текст
          В
          delphi так
          ExpandedWrap disabled
            function TestStringsForZeros(const Source: string): Boolean;
            begin
              Result:= Source = StringOfChar('0', Length(Source));
            end;


          В
          python так
          ExpandedWrap disabled
            def TestStringsForZeros(s):
                return s == '0'*len(s)


          Вопрос: "Каким будет "данный код" в java
          или эквивалентный ему?"

          Заранее спасибо.

          ну так можно также по типу того что ты написал сделать и на жаве
          Сообщение отредактировано: Cfon -
            ExpandedWrap disabled
              Integer.parseInt("....") == 0
            :lol:

            Добавлено
            ну или через valueOf
              ТС хотел знать можно ли как в питоне или Делфи, вроде в жаве нет функции типа StringOfChar?
                Цитата Serafim @
                ExpandedWrap disabled
                  Integer.parseInt("....") == 0
                :lol:

                Добавлено
                ну или через valueOf

                А если в строке "0.0e1"? Или тупо "-0"? Баги плодите, сэр! (edit: там parseint, а не parsefloat)

                Кстати, а если входная строка - пустая (""), ответ должен быть true или false?
                Сообщение отредактировано: Vesper -
                  Цитата wind @
                  ExpandedWrap disabled
                    return string.chars().allMatch(symbol -> symbol == '0');

                  При пустой строке тоже вернет true.
                    Судя по всему, ТС любитель изв... нестандартных решений :crazy:

                    Хм, не знаю зачем я это делаю, но набросаю пару рабочих примеров в духе ТС на яве:

                    ExpandedWrap disabled
                          boolean TestStringsForZeros(String str) {
                              return str.length()==Strings.count(str, '0');
                          }


                    ExpandedWrap disabled
                          boolean TestStringsForZeros(String str) {
                              return str.equals(Strings.pad('0', str.length()));
                          }


                    И да, попрошу заметить, я НЕ рекомендую их где либо применять :lool:

                    Добавлено
                    Цитата Cfon @
                    вроде в жаве нет функции типа StringOfChar?

                    Всё там есть)
                      Цитата VisualProg @

                      А какое стандартное? Может в цикле искать нулевой символ? ;)
                        Cfon
                        Приведённые решения по сути:
                        ExpandedWrap disabled
                          Мы хотим узнать, кончилась ли водка.
                          Для этого мы пересчитываем бутылки в ящике.
                          Приобретаем новый ящик такой же емкости.
                          Заполняем его заведомо пустыми бутылками в том же количестве.
                          Теперь сравниваем, что каждая бутылка из первого такая же, как и соответствующая бутылка во втором.
                          Цитата MBo @

                          Мда не оптимально, тогда лучше таки вцикле искать нулевой символ ;)
                            справедливости ради, попрошу заметить, что первый предложенный вариант:

                            ExpandedWrap disabled
                                      boolean TestStringsForZeros(String str) {
                                          return str.length()==Strings.count(str, '0');
                                      }


                            не создаёт нового ящика, а считает пустые бутылки, и сравнивает их с общим числом бутылок в ящике, но, не факт что это правильное решение. Если вдаваться в детали и гнаться за скоростью:

                            http://grepcode.com/file/repository.grepco....hashCode%28%29

                            В этой конечной сумме ряда val[off++], для нашего случая, всегда равен фиксированному числу. Чисто теоретически, можно собрать формулу для эквивалентного хешкода строки из n одинаковых символов. Ну, это ИМХО, сам не пробовал, но, с большой долей вероятности, будет работать как надо. (хотя, в первый расчёт хеша, скорость будет ещё хуже чем при проходе в цикле, но, в яве хешкод объёкта считать придётся в подавляющем большинстве случаев, если не отказываться от коллекций или сортировок)
                            Сообщение отредактировано: VisualProg -
                              ExpandedWrap disabled
                                    if ($foo =~ /^0+$/) {
                                      print "only zeros";
                                    }
                              Сообщение отредактировано: Gonarh -
                                Хм... но, в яве нет таких операторов и команд :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0488 ]   [ 16 queries used ]   [ Generated: 29.03.24, 14:30 GMT ]