Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menentukan dengan cekap jika dua rentetan adalah putaran antara satu sama lain?

Bagaimana untuk menentukan dengan cekap jika dua rentetan adalah putaran antara satu sama lain?

DDD
DDDasal
2024-10-25 03:22:29362semak imbas

How to Efficiently Determine If Two Strings Are Rotations of Each Other?

Menyemak Putaran Rentetan: Penyelesaian yang Cekap

Dalam temu bual untuk jawatan pembangun perisian, seorang calon telah dikemukakan cabaran: tentukan sama ada dua rentetan adalah versi diputar antara satu sama lain. Khususnya, diberi "s1" dan "s2," tugasnya adalah untuk mengesahkan sama ada "s1" ialah versi "s2" yang diubah suai dengan memutarkan aksaranya.

Pendekatan Penemuduga

Respons calon melibatkan mencari awalan terpanjang dalam "s2" yang sepadan dengan subrentetan dalam "s1," yang akan mewakili titik putaran. Dengan membahagikan "s2" pada titik itu kepada "s2a" dan "s2b," gabungan "s2a" dan "s2b" boleh dibandingkan dengan "s1" untuk kesaksamaan.

Penyelesaian Lebih Ringkas

Walau bagaimanapun, penemuduga mencadangkan pendekatan yang lebih langsung: memastikan bahawa "s1" dan "s2" mempunyai panjang yang sama dan kemudian menguji jika "s2" ialah subrentetan "s1" yang digabungkan dengan dirinya sendiri. Kaedah ini memanfaatkan fakta bahawa rentetan yang diputar akan sentiasa menjadi subrentetan daripada rentetan asal apabila digabungkan dengannya.

Pelaksanaan Java

Di Java, pelaksanaan mudah bagi penyelesaian ini mungkin kelihatan seperti:

<code class="java">boolean isRotation(String s1, String s2) {
    return (s1.length() == s2.length()) && ((s1 + s1).indexOf(s2) != -1);
}</code>

Analisis Kecekapan

Kerumitan masa penyelesaian ini ialah O(n), dengan n ialah panjang rentetan, kerana ia melibatkan gabungan rentetan tunggal dan carian subrentetan pada hasil gabungan. Kerumitan ruang adalah O(n) juga, disebabkan oleh ruang yang diperlukan untuk rentetan bercantum.

Dengan menyediakan kaedah yang mudah dan cekap untuk menyemak putaran rentetan, pendekatan alternatif ini memenuhi permintaan penemu duga untuk kesederhanaan dan berkesan mengesan versi rentetan yang diputar.

Atas ialah kandungan terperinci Bagaimana untuk menentukan dengan cekap jika dua rentetan adalah putaran antara satu sama lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn