Di Jawa apakah ada cara untuk memeriksa kondisinya:
"Apakah karakter tunggal ini muncul sama sekali dalam string x"
tanpa menggunakan loop?
java
validation
string
character
barfoon
sumber
sumber
Jawaban:
Anda bisa menggunakannya
string.indexOf('a')
.Jika char
a
hadir distring
:sumber
indexOf()
menggunakan loop secara internal. Tidak ada jawaban yang memberikan solusi yang benar dan jika seseorang berani mengajukan pertanyaan baru, orang-orang menyatakannyaDuplicate
. Sangat mengecewakan; (String.contains()
yang memeriksa apakah string berisi urutan nilai char yang ditentukanString.indexOf()
yang mengembalikan indeks dalam string kemunculan pertama karakter atau substring yang ditentukan (ada 4 variasi metode ini)sumber
String.contains(""+c)
Saya tidak yakin apa yang ditanyakan oleh pengirim aslinya. Karena indexOf (...) dan berisi (...) keduanya mungkin menggunakan loop secara internal, mungkin dia mencari untuk melihat apakah ini mungkin sama sekali tanpa loop? Saya bisa memikirkan dua cara, satu tentu saja akan menjadi pengulangan:
Yang lain jauh kurang elegan, tetapi kelengkapan ...:
Jumlah garis bertambah karena Anda perlu mendukung string yang lebih lama dan lebih lama tentu saja. Tetapi tidak ada loop / rekursi sama sekali. Anda bahkan dapat menghapus pemeriksaan panjang jika Anda khawatir panjang itu () menggunakan loop.
sumber
sumber
Anda dapat menggunakan 2 metode dari
String
kelas.String.contains()
yang memeriksa apakah string berisi urutan nilai char yang ditentukanString.indexOf()
yang mengembalikan indeks dalam string kemunculan pertama karakter yang ditentukan atau substring atau mengembalikan -1 jika karakter tidak ditemukan (ada 4 variasi metode ini)Metode 1:
Metode 2:
Tautan oleh: Zach Scrivena
sumber
Untuk memeriksa apakah ada sesuatu yang tidak ada dalam sebuah string, Anda setidaknya perlu melihat setiap karakter dalam sebuah string. Jadi, bahkan jika Anda tidak secara eksplisit menggunakan loop, itu akan memiliki efisiensi yang sama. Yang sedang berkata, Anda dapat mencoba menggunakan str.contains ("" + char).
sumber
Jika Anda perlu memeriksa string yang sama sering Anda dapat menghitung kemunculan karakter di muka. Ini adalah implementasi yang menggunakan bit array yang terkandung dalam array panjang:
sumber
Ya, menggunakan metode indexOf () pada kelas string. Lihat dokumentasi API untuk metode ini
sumber
sumber
for
bukan loop sekarang?Keluaran
sumber
sumber
}
sumber
Apakah di bawah ini yang Anda cari?
sumber
&& string.lastIndexOf(character) != index
Anda tidak akan dapat memeriksa apakah char muncul sama sekali dalam beberapa string tanpa setidaknya melewati string sekali menggunakan loop / rekursi (metode built-in seperti indexOf juga menggunakan loop)
Jika tidak. kali Anda mencari jika char dalam string x lebih banyak daripada panjang string daripada saya akan merekomendasikan menggunakan struktur data Set karena itu akan lebih efisien daripada hanya menggunakan
indexOf
Menggunakan set Anda akan dapat memeriksa apakah karakter ada dalam string dalam waktu konstan O (1) tetapi Anda juga akan menggunakan memori tambahan (Kompleksitas ruang akan menjadi O (n)).
sumber
Saya menggunakan metode string.includes () untuk ini yang mengembalikan benar atau salah jika string atau karakter ditemukan. Lihat dokumentasi di bawah ini.
https://www.w3schools.com/jsref/jsref_includes.asp
sumber
// ini hanya utama ... Anda dapat menggunakan wither buffered reader atau scanner
sumber