


Panjang pisah maksimum rentetan supaya setiap aksara dalam rentetan muncul dalam subrentetan
Dalam artikel ini, kami akan meneroka masalah cara mencari panjang partition memaksimumkan rentetan dengan aksara unik. Kami mula-mula memahami penyataan masalah dan kemudian mengkaji kaedah naif dan cekap untuk menyelesaikan masalah ini, termasuk algoritma dan kerumitan masa masing-masing. Akhirnya, kami akan melaksanakan penyelesaian dalam C++.
Pernyataan Masalah
Diberi rentetan, pisahkan rentetan kepada seberapa banyak subrentetan yang mungkin supaya setiap aksara dalam rentetan itu muncul dalam satu subrentetan sahaja. Mengembalikan panjang pemisahan memaksimumkan ini.
Kaedah naif
Pendekatan naif adalah untuk mengulang melalui rentetan, merekodkan kejadian terakhir setiap aksara. Kemudian, ulangi rentetan sekali lagi dan buat partition apabila kejadian terakhir aksara semasa ditemui.
Algoritma (naif)
Memulakan tatasusunan untuk menyimpan kejadian terakhir setiap aksara dalam rentetan.
Gelung melalui rentetan dan rekod kejadian terakhir setiap aksara.
Memulakan vektor untuk menyimpan panjang partition.
Gelung melalui rentetan sekali lagi dan buat partition apabila kejadian terakhir aksara semasa ditemui.
Kod C++ (biasa)
Terjemahan bahasa Cina bagiContoh
ialah:Contoh
#include <iostream> #include <vector> #include <string> #include <algorithm> std::vector<int> partitionLengths(std::string s) { std::vector<int> lastOccurrence(26, -1); for (size_t i = 0; i < s.size(); i++) { lastOccurrence[s[i] - 'a'] = i; } std::vector<int> partitionLengths; int start = 0, end = 0; for (size_t i = 0; i < s.size(); i++) { end = std::max(end, lastOccurrence[s[i] - 'a']); if (i == end) { partitionLengths.push_back(end - start + 1); start = i + 1; } } return partitionLengths; } int main() { std::string s = "abacdc"; std::vector<int> lengths = partitionLengths(s); std::cout << "Lengths of maximized partitions: "; for (int length : lengths) { std::cout << length << " "; } return 0; }
Output
Lengths of maximized partitions: 3 3
Kerumitan masa (algoritma naif) - O(n), dengan n ialah panjang rentetan.
Kaedah yang cekap
Kaedah yang cekap adalah serupa dengan kaedah yang mudah, tetapi bukannya mengulangi rentetan dua kali, kami boleh mencipta partition sambil merakam kejadian terakhir setiap aksara dalam satu lelaran.
Algoritma (cekap)
Memulakan tatasusunan untuk menyimpan kejadian terakhir setiap aksara dalam rentetan.
Mulakan vektor untuk menyimpan panjang partition.
Gelung melalui rentetan, rekod kejadian terakhir setiap aksara dan buat partition apabila kejadian terakhir aksara semasa ditemui.
Kod C++ (cekap)
Contoh
#include <iostream> #include <vector> #include <string> #include <algorithm> std::vector<int> partitionLengths(std::string s) { std::vector<int> lastOccurrence(26, -1); std::vector<int> partitionLengths; int start = 0, end = 0; for (size_t i = 0; i < s.size(); i++) { lastOccurrence[s[i] - 'a'] = i; } for (size_t i = 0; i < s.size(); i++) { end = std::max(end, lastOccurrence[s[i] - 'a']); if (i == end) { partitionLengths.push_back(end - start + 1); start = i + 1; } } return partitionLengths; } int main() { std::string s = "abacdc"; std::vector<int> lengths = partitionLengths(s); std::cout << "Lengths of maximized partitions: "; for (int length : lengths) { std::cout << length << " "; } return 0; }
Output
Lengths of maximized partitions: 3 3
Kerumitan masa (cekap) - O(n), dengan n ialah panjang rentetan.
Kesimpulan
Dalam artikel ini, kami meneroka masalah memaksimumkan panjang partition untuk mencari rentetan dengan aksara unik. Kami membincangkan kaedah yang mudah tetapi cekap untuk menyelesaikan masalah ini, bersama-sama dengan kerumitan algoritma dan masa mereka. Pendekatan cekap ini menggabungkan rakaman kejadian terakhir bagi setiap aksara dan mencipta sekatan dalam satu lelaran, memberikan penyelesaian yang dioptimumkan. Kedua-dua kaedah mempunyai kerumitan masa yang sama, tetapi kaedah yang cekap menggunakan lebih sedikit lelaran.
Atas ialah kandungan terperinci Panjang pisah maksimum rentetan supaya setiap aksara dalam rentetan muncul dalam subrentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Python ialah bahasa pengaturcaraan popular yang menyediakan banyak fungsi terbina dalam untuk mengendalikan rentetan. Salah satu fungsi yang biasa digunakan ialah fungsi split(), yang boleh memisahkan rentetan kepada berbilang subrentetan mengikut pembatas yang ditentukan. Artikel ini akan memperkenalkan cara menggunakan fungsi split() dalam Python3.x. Dalam Python, fungsi split() ialah fungsi terbina dalam kelas rentetan Sintaks asasnya adalah seperti berikut: string.split(separator,maxsplit)

Dalam artikel ini, kami akan meneroka masalah bagaimana untuk mencari panjang partition memaksimumkan rentetan dengan aksara unik. Kami mula-mula memahami penyataan masalah dan kemudian mengkaji kaedah naif dan cekap untuk menyelesaikan masalah ini, termasuk algoritma dan kerumitan masa masing-masing. Akhirnya, kami akan melaksanakan penyelesaian dalam C++. Pernyataan Masalah Diberi rentetan, bahagikan rentetan itu kepada seberapa banyak subrentetan yang mungkin supaya setiap aksara dalam rentetan muncul dalam satu subrentetan sahaja. Mengembalikan panjang pemisahan memaksimumkan ini. Pendekatan naif Pendekatan naif adalah untuk mengulang melalui rentetan, merekodkan kejadian terakhir setiap aksara. Kemudian, ulangi rentetan sekali lagi dan buat partition apabila kejadian terakhir aksara semasa ditemui. Algoritma (naif) untuk memulakan tatasusunan untuk menyimpan rentetan

Cara Membahagikan Rentetan kepada Array dalam PHP Dalam PHP, kita selalunya perlu memproses rentetan dan membahagikannya kepada beberapa bahagian. Memisahkan rentetan kepada tatasusunan ialah operasi biasa yang membantu kami mengendalikan pelbagai bahagian rentetan dengan lebih baik. Dalam artikel ini, kita akan belajar cara membahagikan rentetan kepada tatasusunan menggunakan fungsi dalam PHP dan menyediakan beberapa contoh kod. Gunakan fungsi explode untuk memisahkan rentetan kepada tatasusunan PHP menyediakan fungsi yang dipanggil explode, yang boleh memisahkan rentetan mengikut pembatas yang ditentukan.

Dalam bahasa PHP, terdapat banyak fungsi asas yang boleh membantu kami memproses rentetan dengan cepat dan cekap. Antaranya, fungsi letupan adalah fungsi pemisahan rentetan yang sangat praktikal. Ia boleh memisahkan rentetan kepada tatasusunan mengikut pembatas yang ditentukan, dan kemudian melakukan operasi rentetan yang lebih fleksibel. Dalam artikel ini, kami akan memperkenalkan cara menggunakan fungsi explode untuk memisahkan rentetan dalam PHP. 1. Format fungsi explode Format fungsi explode dalam bahasa PHP adalah seperti berikut: explode(separa

Dalam masalah ini, kita akan mengira cara untuk membahagikan rentetan yang diberikan kepada substring K supaya ia memenuhi syarat yang diberikan dalam pernyataan masalah. Kami akan menggunakan rekursi untuk menyelesaikan masalah ini. Selain itu, kami akan menggunakan kaedah pengaturcaraan dinamik jadual untuk menyelesaikan masalah ini dengan cekap. Pernyataan Masalah − Kami mempunyai rentetan panjang tertentu yang dipanggil bin_Str. Rentetan mengandungi hanya aksara angka dari '0' hingga '9'. Kita perlu mengira bilangan cara untuk membahagikan rentetan kepada subrentetan K supaya ia memenuhi syarat berikut. Subrentetan hendaklah mengandungi sekurang-kurangnya 2 aksara. Aksara pertama setiap subrentetan hendaklah genap dan aksara terakhir hendaklah ganjil. ContohContoh inputM=2,K=2;bin_str="255687&q

Terdapat banyak fungsi rentetan dalam PHP, antaranya fungsi pemisahan rentetan sangat biasa digunakan. Fungsi pemisahan rentetan boleh membelah rentetan mengikut pembatas yang ditentukan dan mengembalikan tatasusunan. Di bawah ini kami akan memperkenalkan beberapa fungsi pemisahan rentetan yang biasa digunakan. fungsi explode Fungsi explode boleh memisahkan rentetan mengikut pembatas yang ditentukan dan mengembalikan tatasusunan. Sintaksnya adalah seperti berikut: explode(string$separator,string$string

Kaedah untuk menyelesaikan ralat yang dilaporkan oleh fungsi explode dalam PHP memerlukan contoh kod tertentu Dalam PHP, fungsi explode ialah fungsi yang digunakan untuk memisahkan rentetan kepada tatasusunan mengikut pembatas yang ditentukan. Walau bagaimanapun, kadangkala ralat berlaku apabila menggunakan fungsi letupan, terutamanya kerana parameter yang diluluskan tidak memenuhi keperluan fungsi tersebut. Di bawah ini kami akan membincangkan kemungkinan masalah dan penyelesaian secara terperinci, dan memberikan contoh kod khusus. Ralat disebabkan oleh bilangan parameter yang salah apabila menggunakan fungsi letupan

Dalam masalah ini, kita perlu membahagikan rentetan yang diberikan supaya subrentetan ketiga boleh menjadi subrentetan daripada dua subrentetan pertama. Mari kita fikirkan penyelesaiannya. Rentetan ketiga boleh menjadi subrentetan daripada dua rentetan pertama hanya jika dua rentetan pertama mengandungi semua aksara rentetan ketiga. Jadi, kita perlu mencari sekurang-kurangnya satu aksara dengan kekerapan lebih daripada 3 dalam rentetan yang diberikan, dan kita boleh mengambil subrentetan ketiga bagi aksara tunggal itu. Pernyataan Masalah - Kami diberi rentetan str yang mengandungi N aksara abjad huruf kecil. Kita perlu menyemak sama ada kita boleh membahagikan rentetan kepada tiga subrentetan a, b dan c supaya subrentetan c ialah subrentetan a dan b. Bergantung pada sama ada 3 subrentetan boleh ditemui, cetak "ya" atau "tidak"
