Jika kami memiliki string karakter alfabet dan beberapa tanda hubung, dan kami ingin menghitung jumlah tanda hubung antara dua karakter alfabet dalam string ini. apa cara termudah untuk melakukan ini?
Contoh:
Memasukkan: a--bc---d-k
keluaran: 2031
Ini berarti bahwa ada 2 tanda hubung antara a dan b, 0 tanda hubung antara b dan c, 3 tanda hubung antara c dan d dan 1 tanda hubung antara d dan k
apa cara yang baik untuk menemukan daftar keluaran ini dengan python?
a-b-c
dana-----------b
akan menjadi output yang sama11
?Jawaban:
Solusi dengan regex:
keluaran:
Solusi dengan logika loop brute force:
keluaran:
sumber
f
di depan pola adalah kesalahan ketik? Anda tidak perlu membuat string mentah tanpa garis miring terbalik. Juga tidak perlu untuk menangkap grup =). Jawaban yang bagus sampaif
, terima kasih. Saya menggunakan f-string, tetapi saya menjatuhkan bagian itu sementara saya meningkatkan jawabannya, tetapi saya lupa menghapusnyaf
. Saya memperbarui jawaban saya. Tidak perlu grup tangkap juga kan :)count
hanya ditambahkan padaresults
saatc != '-'
ditemui. Jikax
diakhiri dengan-
, yang terakhircount
akan diabaikan.Anda dapat menggunakan solusi yang sangat sederhana seperti ini:
Keluaran:
'2031'
sumber
Jika input Anda juga dapat dimulai dengan tanda hubung, Anda dapat menggunakan ini:
Tetapi jika input Anda selalu dimulai dengan huruf, Anda mungkin tidak suka 0 yang selalu ada di kepala daftar.
Jika Anda membutuhkan output sebagai string int, maka Anda dapat menambahkan ini:
sumber
Inilah pendekatan loop sederhana:
sumber