Ruby gsub не выходит из одинарных кавычек

Я не понимаю то, что продолжается здесь. Как я должен подать gsub для получения строки "Yaho \'o"?

>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
25
задан 1 February 2010 в 21:49
поделиться

2 ответа

\' означает $', что это все после совпадения. Снова уберите \ и это работает

"Yaho'o".gsub("'", "\\\\'")
31
ответ дан 28 November 2019 в 21:32
поделиться

Если бы нам разрешили считать, что вход можно отсортировать в O (N) по radix sort, я бы немного улучшил решение Криса:

  • radix отсортировать вход.
  • Для первого элемента результата линейный поиск вперед до тех пор, пока мы не найдем либо его квадрат (в этом случае стоп на true), либо конец (в этом случае стоп на false), либо значение больше квадрата (в этом случае продолжить поиск квадрата второго и последующих элементов отсортированного массива).

Каждый из двух «указателей» перемещения строго вперед, поэтому общая сложность равна O (N), предполагая, что сортировка по радиусу равна O (N) и что возведение в квадрат и сравнение равны O (1). Предположительно, тот, кто поставил этот вопрос, намеревался сделать эти предположения.

В ответ на комментарий спрашивающего на другой ответ: если целые числа на входе не ограничены, то я не думаю, что это можно сделать. Просто вычисление квадрата целого числа требует больше линейного времени (по крайней мере: не известен линейный алгоритм умножения), поэтому рассмотрим вход размером n бит, состоящий из двух целых чисел размером n/3 бит и 2 * n/3 бит. Проверка того, является ли один квадратом другого, не может быть выполнена в O (n). Думаю. Я могу ошибаться.

-121--2397731-

Простое решение состоит в том, чтобы после сортировки переместить указатели вниз с обоих концов массива, ища пары, которые суммируются до x. Если сумма слишком высока, уменьшите правый указатель. Если значение слишком низкое, увеличьте значение влево. Если указатели пересекаются, ответ - нет.

-121--1315269-
"Yaho'o".gsub("'", "\\\\'")

Потому что вы избегаете символа побега, а также избегаете одной цитаты.

2
ответ дан 28 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: