1233. Alih keluar Sub-Folder daripada Sistem Fail
Kesukaran: Sederhana
Topik: Tatasusunan, Rentetan, Carian Pertama Kedalaman, Percubaan
Diberikan senarai folder folder, kembalikan folder selepas mengalih keluar semua sub-folder dalam folder tersebut. Anda boleh mengembalikan jawapan dalam sebarang pesanan.
Jika folder[i] terletak dalam folder lain[j], ia dipanggil sub-folder daripadanya. Subfolder folder[j] mesti bermula dengan folder[j], diikuti dengan "/". Contohnya, "/a/b" ialah subfolder bagi "/a", tetapi "/b" bukan subfolder bagi "/a/b/c".
Format laluan ialah satu atau lebih rentetan bentuk yang digabungkan: '/' diikuti dengan satu atau lebih huruf kecil Inggeris.
- Sebagai contoh, "/leetcode" dan "/leetcode/problems" ialah laluan yang sah manakala rentetan kosong dan "/" tidak.
Contoh 1:
- Input: folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"]
- Output: ["/a","/c/d","/c/f"]
- Penjelasan: Folder "/a/b" ialah subfolder bagi "/a" dan "/c/d/e" berada di dalam folder "/c/d" dalam sistem fail kami.
Contoh 2:
- Input: folder = ["/a","/a/b/c","/a/b/d"]
- Output: ["/a"]
- Penjelasan: Folder "/a/b/c" dan "/a/b/d" akan dialih keluar kerana ia adalah subfolder bagi "/a".
Contoh 3:
- Input: folder = ["/a/b/c","/a/b/ca","/a/b/d"]
- Output: ["/a/b/c","/a/b/ca","/a/b/d"]
Kekangan:
- 1 4
- 2
- folder[i] hanya mengandungi huruf kecil dan '/'.
- folder[i] sentiasa bermula dengan aksara '/'.
- Setiap nama folder adalah unik.
Petunjuk:
- Isih folder mengikut leksikografi.
- Masukkan elemen semasa dalam tatasusunan dan kemudian gelung sehingga kita menyingkirkan semua subfolder mereka, ulangi ini sehingga tiada unsur yang tinggal.
Penyelesaian:
Kami boleh menggunakan gabungan pengisihan dan perbandingan rentetan. Langkah-langkah di bawah menggariskan penyelesaian dalam PHP:
Isih Folder Secara Leksikografi: Mengisih laluan folder dalam susunan leksikografik memastikan mana-mana subfolder akan mengikuti folder induknya serta-merta. Contohnya, "/a" akan diikuti dengan "/a/b" dalam senarai diisih, membolehkan kami menyemak perhubungan subfolder dengan mudah.
Kenal pasti dan Tapis Sub-Folder: Kami boleh melelang melalui senarai yang diisih, menyemak sama ada laluan folder semasa ialah sub-folder daripada laluan yang ditambahkan sebelum ini. Jika ya, kami melangkaunya. Jika tidak, kami menambahkannya pada senarai keputusan kami.
Melaksanakan Penyelesaian dalam PHP: Kami menjejaki laluan folder terakhir yang ditambahkan pada senarai hasil. Jika folder semasa bermula dengan folder terakhir ini dan diikuti dengan serta-merta dengan /, ia adalah subfolder dan harus diabaikan.
Mari laksanakan penyelesaian ini dalam PHP: 1233. Alih keluar Sub-Folder daripada Sistem Fail
<?php /** * @param String[] $folder * @return String[] */ function removeSubfolders($folders) { ... ... ... /** * go to ./solution.php */ } // Test cases $folder1 = ["/a","/a/b","/c/d","/c/d/e","/c/f"]; $folder2 = ["/a","/a/b/c","/a/b/d"]; $folder3 = ["/a/b/c","/a/b/ca","/a/b/d"]; print_r(removeSubfolders($folder1)); // Output: ["/a","/c/d","/c/f"] print_r(removeSubfolders($folder2)); // Output: ["/a"] print_r(removeSubfolders($folder3)); // Output: ["/a/b/c","/a/b/ca","/a/b/d"] ?>
Penjelasan:
Isih: Fungsi sort() menyusun folder dalam susunan leksikografik. Ini menjadikannya lebih mudah untuk mencari hubungan subfolder kerana subfolder akan mengikuti folder induknya secara langsung.
-
Gelung melalui setiap folder:
- Jika hasil kosong (lelaran pertama) atau jika laluan folder semasa tidak bermula dengan folder terakhir ditambah diikuti dengan /, ia bukan subfolder dan ditambahkan pada tatasusunan hasil.
- Jika ia bermula dengan laluan folder terakhir dan mempunyai / serta-merta mengikuti, ia adalah sub-folder dan kami melangkau menambahkannya ke hasil.
Hasil: Fungsi mengembalikan hasil, yang mengandungi hanya folder akar, tidak termasuk mana-mana subfolder.
Pendekatan ini cekap dengan kerumitan masa O(n log n) disebabkan oleh langkah pengisihan dan imbasan linear mempunyai O(n ), menjadikan ini penyelesaian yang baik untuk input yang lebih besar dalam kekangan masalah.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
- GitHub
Atas ialah kandungan terperinci Alih keluar Sub-Folder daripada Sistem Fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

Dalam PHP, sifat sesuai untuk situasi di mana penggunaan semula kaedah diperlukan tetapi tidak sesuai untuk warisan. 1) Ciri membolehkan kaedah multiplexing dalam kelas untuk mengelakkan pelbagai kerumitan warisan. 2) Apabila menggunakan sifat, anda perlu memberi perhatian kepada konflik kaedah, yang dapat diselesaikan melalui alternatif dan sebagai kata kunci. 3) Tua yang berlebihan harus dielakkan dan tanggungjawab tunggalnya harus dikekalkan untuk mengoptimumkan prestasi dan meningkatkan pemeliharaan kod.

Kontena Suntikan Ketergantungan (DIC) adalah alat yang menguruskan dan menyediakan kebergantungan objek untuk digunakan dalam projek PHP. Manfaat utama DIC termasuk: 1. Decoupling, membuat komponen bebas, dan kod itu mudah dikekalkan dan diuji; 2. Fleksibiliti, mudah untuk menggantikan atau mengubah suai kebergantungan; 3. Keseluruhan, mudah untuk menyuntik objek mengejek untuk ujian unit.

SplfixedArray adalah pelbagai saiz tetap dalam PHP, sesuai untuk senario di mana prestasi tinggi dan penggunaan memori yang rendah diperlukan. 1) Ia perlu menentukan saiz apabila membuat untuk mengelakkan overhead yang disebabkan oleh pelarasan dinamik. 2) Berdasarkan pelbagai bahasa C, secara langsung mengendalikan memori dan kelajuan akses cepat. 3) Sesuai untuk pemprosesan data berskala besar dan persekitaran sensitif memori, tetapi ia perlu digunakan dengan berhati-hati kerana saiznya tetap.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Dalam JavaScript, anda boleh menggunakan NullcoalescingOperator (??) dan NullcoalescingAssignmentOperator (?? =). 1.? Menerapkan semula operan pertama yang tidak berselisih atau tidak ditentukan. 2.?? Pengendali ini memudahkan logik kod, meningkatkan kebolehbacaan dan prestasi.


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

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Dreamweaver CS6
Alat pembangunan web visual