Поиск слова, которое чаще всего происходит в документе, может быть выполнено в O (n) с помощью простой гистограммы [hash based]:
histogram <- new map
for each word in document:
if word in histogram:
histogram[word] <- histogram[word] + 1
else:
histogram[word] <- 1
max <- 0
maxWord<- ""
for each word in histogram:
if histogram[word] > max:
max <- histogram[word]
maxWord <- word
return maxWord
Это O (n), и поскольку проблема явно является проблемой Омега (n), она оптимальна в терминах большой записи O .
Для десятичной цифры вы можете использовать \d+(\.\d+)*
регулярное выражение. Если мы поместим это в контекст утверждения, мы получим это:
(\\d+(\\.\\d+)*)+\\)\\((\\d+(\\.\\d+)*)+
Вот пример:
String s = "10.0)(20.0";
String regex = "(\\d+(\\.\\d+)*)+\\)\\((\\d+(\\.\\d+)*)+";
System.out.println(s.matches(regex));