Python karakter pertama yang tidak berulang

Dalam artikel ini, kami akan menyajikan tantangan algoritme dan kemudian memberikan dua solusi. runner-up dan algoritma optimal. Algoritme ditulis dengan Python

Tantangan

Temukan karakter pertama yang tidak berulang dalam rangkaian huruf kecil. Non-berulang didefinisikan sebagai karakter yang hanya muncul sekali dalam string. Jika semua karakter berulang, kembalikan garis bawah

Berikut adalah beberapa string sampel dan jawaban untuk masing-masing

"aabcdb" # c
"abcddc" # a
"aabbcc" # _
"abbcda" # c

Sekarang setelah kita memahami tantangannya, saya mendorong Anda untuk mencoba sendiri

Jika Anda sudah mencoba atau ingin melewatinya, mari kita ke solusinya

Pemenang kedua

Dengan menggunakan sepasang perulangan for, kita dapat mengulangi string dengan cara bersarang untuk menentukan apakah suatu karakter telah diulang

Beberapa catatan tentang solusi ini

  • Algoritma for loop bersarang memiliki kompleksitas waktu polinomial O(n^2)
  • Optimalkan solusi loop bersarang dengan mengurangi algoritme menjadi satu loop

Solusi Optimal

Untuk menghindari loop bersarang, kita dapat melacak berapa kali setiap nilai ada dalam string menggunakan kamus — di mana karakter adalah istilah dan jumlah adalah definisi

Setelah kami menghitung, kamus menjadi referensi saat kami memeriksa karakter pertama dengan hanya satu kejadian

Beberapa catatan tentang solusi ini

  • Karena kamus secara definisi tidak terurut, kita harus mengulang untuk kedua kalinya untuk memastikan kita mempertahankan urutan string
  • Mulai dari versi 3. 7, kamus Python akan mempertahankan urutan entri. Ini akan menghilangkan kebutuhan untuk mengulang melalui string dan memungkinkan kita untuk langsung beralih ke kamus sebagai gantinya

Solusi Bonus

Untungnya bagi kami Pythonista, ada fungsi string asli yang membuat algoritme ini mudah

Menggunakan .find() dan .rfind(), kita dapat menentukan indeks dari kiri dan kanan karakter. Jika pencarian kiri dan kanan mengembalikan indeks yang sama, maka kita dapat menyimpulkan bahwa hanya ada satu karakter yang muncul

String adalah kombinasi karakter ketika 2 atau lebih karakter bergabung bersama membentuk string apakah formasi memberikan hasil yang bermakna atau tidak berarti. Dalam pemrograman python, kami memperlakukan satu karakter juga sebagai string karena tidak ada tipe data sebagai karakter dalam python. Dalam program python ini, kita akan menemukan elemen unik atau elemen string yang tidak berulang

Alat berikut memvisualisasikan apa yang dilakukan komputer langkah demi langkah saat menjalankan program tersebut

Editor Kode Python

Punya cara lain untuk menyelesaikan solusi ini?

Sebelumnya. Tulis program Python untuk membagi string pada kejadian terakhir dari pembatas
Lanjut. Tulis program Python untuk mencetak semua permutasi dengan jumlah pengulangan karakter yang diberikan dari string yang diberikan

Berapa tingkat kesulitan latihan ini?

Mudah Sedang Keras

Uji keterampilan Pemrograman Anda dengan kuis w3resource



Ikuti kami di Facebook dan Twitter untuk pembaruan terbaru.

Piton. Kiat Hari Ini

Bin untuk bit

Jadi bagaimana semuanya dimulai?

Saat Anda membaca surat-surat ini, mereka benar-benar bepergian sebagai satu dan nol mungkin melintasi Samudra Atlantik melalui kabel serat optik ke rumah Anda. 3 tip berikutnya adalah untuk orang-orang yang mungkin tertarik dengan byte dan bit yang merupakan sistem yang mewakili angka satu dan nol ini

Ini mungkin terdengar sepele tetapi sebenarnya tidak sepele bahkan untuk pemrogram tingkat tinggi atau manusia mana pun dalam pengertian itu. Di sinilah semuanya dimulai sejauh komputer berjalan. Saya pikir sebagai pembuat kode setiap orang setidaknya harus mengambil beberapa menit untuk memahami "bit" sama seperti masuk akal bagi seorang tukang kayu untuk memahami apa itu pohon atau sesuatu seperti itu

Juga, jika Anda menonton game imitasi, kisah nyata yang luar biasa tentang Alan Turing orang yang mendirikan komputer modern pertama (Turing Machine - 1936) yang diikuti oleh komputer digital pertama seperti komputer ABC (tanpa CPU maka tidak dapat diprogram) dan komputer ENIAC . Ini semua memiliki fitur umum. tabung vakum. Ini seperti bola lampu yang menyala dan mati, mewakili 1 dan mati mewakili 0. Tambahkan cukup nilai-nilai ini bersama-sama dan Anda memiliki data digital. Hore

Juga ComputerHope memiliki artikel yang sangat bagus tentang Sejarah Perkembangan Komputer yang layak dibaca

Jadi, jika cerita itu tidak membuat Anda terkesan, saya tidak tahu apa yang akan tetapi satu bit mewakili 1 nilai dari 2 kemungkinan, 0 atau 1. Seluruh ide ini secara harfiah adalah dasar dari semua komputasi dan elektronik yang kita miliki dan gunakan saat ini

Bagaimana menemukan karakter pertama yang tidak berulang dalam sebuah string dengan Python?

# String myStr = "thisisit" # Looping while myStr. = "". slen0 = len(myStr) ch = myStr[0] myStr = myStr. ganti(ch, "") slen1 = len(myStr) jika slen1 == slen0-1. print ("Karakter pertama yang tidak berulang = ",ch) break; . print ("Tidak Ditemukan Karakter Unik

Bagaimana menemukan karakter pertama yang tidak berulang dalam string yang diberikan?

Algoritma. .
Ambil String sebagai masukan dari pengguna
Buat array 256 elemen untuk menyimpan frekuensi setiap karakter
Ulangi loop dari 0 hingga panjang string untuk menghitung frekuensi setiap karakter
Ulangi lagi satu lingkaran dari 0 hingga 256 untuk menemukan karakter yang frekuensinya 1 dan juga cetak karakter itu

Bagaimana Anda menemukan angka yang tidak berulang dengan Python?

Metode 1. .
Untuk memeriksa status elemen yang dikunjungi, buat array berukuran n
Jalankan loop dari indeks 0 ke n dan periksa apakah (visited[i]==1) lalu lewati elemen itu
Kalau tidak, buat variabel count = 1 untuk menjaga jumlah frekuensi
Jalankan loop dari indeks i+1 ke n

Bagaimana Anda menampilkan karakter yang tidak berulang dalam sebuah string?

Temukan karakter pertama yang tidak berulang dalam sebuah string [4 cara] .
Metode 1. Menggunakan indexOf() dan lastIndexOf() [Termudah]
Metode 2. Menggunakan LinkedHashMap
Metode 3. Menggunakan Set dan ArrayList
Metode 4. Menggunakan Java 8