В Java есть способ проверить условие:
«Появляется ли этот единственный символ вообще в строке x»
без использования цикла?
java
validation
string
character
barfoon
источник
источник
Ответы:
Вы можете использовать
string.indexOf('a')
.Если символ
a
присутствует вstring
:источник
indexOf()
использует цикл внутри. Ни один из ответов не дает правильного решения, и если кто-то осмеливается задать новый вопрос, люди заявляют об этомDuplicate
. Действительно разочаровывает; (String.contains()
который проверяет, содержит ли строка указанную последовательность значений символовString.indexOf()
который возвращает индекс в строке первого вхождения указанного символа или подстроки (есть 4 варианта этого метода)источник
String.contains(""+c)
Я не уверен, что именно спрашивает оригинальный плакат. Так как indexOf (...) и содержит (...) оба, вероятно, используют циклы внутри, возможно, он ищет, возможно ли это вообще без цикла? Я могу думать о двух путях, одно из которых, конечно, будет повторением:
Другой гораздо менее элегантный, но полнота ...
Количество строк растет, поскольку вам необходимо поддерживать более длинные и длинные строки, конечно. Но нет никаких петель / повторений вообще. Вы даже можете удалить проверку длины, если вы обеспокоены тем, что эта длина () использует цикл.
источник
источник
Вы можете использовать 2 метода из
String
класса.String.contains()
который проверяет, содержит ли строка указанную последовательность значений символовString.indexOf()
который возвращает индекс в строке первого вхождения указанного символа или подстроки или возвращает -1, если символ не найден (существует 4 варианта этого метода)Способ 1:
Способ 2:
Ссылки по: Зак Скривена
источник
Чтобы проверить, не существует ли чего-либо в строке, вам нужно хотя бы взглянуть на каждый символ в строке. Таким образом, даже если вы не используете цикл явно, он будет иметь ту же эффективность. При этом вы можете попробовать использовать str.contains ("" + char).
источник
Если вам нужно часто проверять одну и ту же строку, вы можете заранее рассчитать количество символов. Это реализация, которая использует битовый массив, содержащийся в длинном массиве:
источник
Да, используя метод indexOf () для строкового класса. См. Документацию API для этого метода.
источник
источник
for
не петля сейчас?Вывод
источник
источник
}
источник
Является ли ниже, что вы искали?
источник
&& string.lastIndexOf(character) != index
Вы не сможете проверить, присутствует ли вообще символ в какой-либо строке, не перебирая строку по крайней мере один раз с использованием цикла / рекурсии (встроенные методы, такие как indexOf, также используют цикл)
Если нет раз вы смотрите, если символ в строке x больше, чем длина строки, чем я бы рекомендовал использовать структуру данных Set, так как это было бы более эффективно, чем просто использование
indexOf
Используя set, вы сможете проверить, существует ли символ в строке за постоянное время O (1), но вы также будете использовать дополнительную память (сложность пробела будет O (n)).
источник
Для этого я использовал метод string.include (), который возвращает true или false, если найдена строка или символ. Смотрите ниже документацию.
https://www.w3schools.com/jsref/jsref_includes.asp
источник
// это только главное ... вы можете использовать буферизованный ридер или сканер
источник