См. статью в Википедии по этой теме. Пример Алгоритм Manacher's Реализация Java для линейного решения O (n) из следующей статьи:
import java.util.Arrays; public class ManachersAlgorithm {public static String findLongestPalindrome (String s) {if (s == null || s.length () == 0) return "";
blockquote>char[] s2 = addBoundaries(s.toCharArray()); int[] p = new int[s2.length]; int c = 0, r = 0; // Here the first element in s2 has been processed. int m = 0, n = 0; // The walking indices to compare if two elements are the same for (int i = 1; i
r) { p[i] = 0; m = i-1; n = i+1; } else { int i2 = c*2-i; if (p[i2]<(r-i)) { p[i] = p[i2]; m = -1; // This signals bypassing the while loop below. } else { p[i] = r-i; n = r+1; m = i*2-n; } } while (m>=0 && n r) { c = i; r = i+p[i]; } } int len = 0; c = 0; for (int i = 1; i
Начиная с PHP 7.3 , есть новая встроенная функция под названием array_key_first ()
, которая будет извлекать первый ключ из данный массив без сброса внутреннего указателя. Дополнительную информацию см. В документации .
Вы можете использовать reset
и ключ
:
reset($array);
$first_key = key($array);
По сути, это то же самое, что и ваш исходный код, но с немного меньше накладных расходов, и то, что происходит, станет более очевидным.
Просто не забудьте вызвать reset
, или вы можете получить любой из ключей в массиве. Вы также можете использовать end
вместо reset
, чтобы получить последний ключ.
Если вы хотите, чтобы ключ получил первое значение, reset
фактически вернет его. :
Я считаю, что @Jason Creighton и @ S.Lott правы.
По крайней мере, если таблица, которую вы обновляете, находится в транзакционном механизме хранения. InnoDB
является транзакционным, ISAM
- нет.
Вы должны либо вызвать commit ()
на своем объекте подключения перед его закрытием, либо вы должны установить подключение к режиму автофиксации. Я не уверен, как это сделать для соединения MySQLdb, я полагаю, вы либо устанавливаете аргумент конструктору соединения, либо устанавливаете свойство после создания объекта соединения.
Что-то вроде:
conn = mysql.connection(host, port, autocommit=True)
# or
conn = mysql.connection(host, port)
conn.autocommit(True)