Jadual Kandungan
Kaedah
Kaedah 1: Kaedah brute force cracking
Tatabahasa
Algoritma
Contoh 2
Output
Kaedah 2: Semak subrentetan
输出
结论
Rumah pembangunan bahagian belakang C++ Semak sama ada anjakan kiri dan kanan mana-mana rentetan akan menghasilkan rentetan yang diberikan

Semak sama ada anjakan kiri dan kanan mana-mana rentetan akan menghasilkan rentetan yang diberikan

Sep 17, 2023 am 11:29 AM
rentetan Beralih ke kiri Bergerak ke kanan

Semak sama ada anjakan kiri dan kanan mana-mana rentetan akan menghasilkan rentetan yang diberikan

Himpunan aksara diwakili oleh jenis data rentetan. Ia menggunakan huruf, nombor, simbol dan ruang untuk susunan logik. Kebanyakan bahasa komputer menggunakan petikan tunggal atau berganda untuk melampirkan rentetan untuk membezakannya daripada jenis data lain.

Pengaturcara sering menggunakan rentetan untuk melaksanakan beberapa operasi input dan output, menyimpan dan memanipulasi data teks, dsb. Beberapa operasi biasa pada rentetan termasuk penggabungan (menggabungkan dua atau lebih rentetan), mengekstrak subrentetan (mendapatkan sebahagian daripada rentetan) dan mencari aksara atau corak tertentu dalam rentetan.

Kaedah

Kita boleh menggunakan kaedah berikut untuk menentukan sama ada hasil anjakan kiri dan kanan rentetan adalah −

untuk setiap rentetan

Kaedah 1. Kaedah brute force cracking −

Kaedah 2. Semak subrentetan −

Kaedah 1: Kaedah brute force cracking

Menggunakan kaedah brute force, hasilkan semua anjakan kiri dan kanan rentetan input dan bandingkan setiap rentetan dengan rentetan sasaran. Kerumitan masa kaedah ini, di mana n ialah panjang rentetan, ialah O(n2).

Tatabahasa

Gelung melalui semua kemungkinan anjakan kiri dan kanan rentetan asal dan bandingkannya dengan rentetan yang diberikan, ini ialah cara kekerasan untuk menentukan sama ada sebarang anjakan kiri dan kanan rentetan akan menghasilkan rentetan yang diberikan . Sintaks umum strategi ini adalah seperti berikut −

string_shift_check (original_string, given_string):
   n = length of original string
   for int i from 0 to n-1:
      left shift = original string[i:n] + original string[0:i]
      right shift = original string[n-i:n] + original string[0:n-i]
      if left shift == given string or right shift == given string:
         return True
   return False
Salin selepas log masuk

Algoritma

Cara brute force untuk menentukan sama ada anjakan kiri atau kanan rentetan menghasilkan rentetan tertentu adalah untuk menguji setiap anjakan rentetan yang mungkin dan menentukan sama ada satu anjakan sesuai dengan rentetan yang diberikan. Algoritma adalah seperti berikut −

Langkah 1 − Mulakan dengan memulakan pembolehubah kepada 0, mewakili kiraan anjakan semasa.

Langkah 2 - Apabila nombor anjakan kurang daripada panjang rentetan -

  • Alihkan rentetan ke kiri, gerakkan aksara pertama ke hujung rentetan.

  • Sahkan bahawa rentetan yang dialihkan sepadan dengan rentetan yang disediakan. Jika ada padanan, jawapan yang benar diberikan.

  • Anjakkan rentetan dengan mengalihkan aksara terakhir ke permulaan.

  • Sahkan bahawa rentetan yang dialihkan sepadan dengan rentetan yang disediakan. Jika ada padanan, berikan jawapan yang benar.

  • Tingkatkan kiraan syif sebanyak 1.

Langkah 3 - Selepas mencuba setiap anjakan yang mungkin, jika tiada padanan ditemui, kembalikan palsu.

Terjemahan bahasa Cina bagi

Contoh 1

ialah:

Contoh 1

Pelaksanaan ini menunjukkan bahawa fungsi Shifted String menerima dua parameter rentetan s dan sasaran, dan mengembalikan hasil Boolean yang menunjukkan sama ada sasaran ialah anjakan kiri atau kanan s.

Sebelum menentukan sama ada sasaran ialah versi anjakan s, fungsi terlebih dahulu mengesahkan sama ada panjang dua rentetan adalah sama. Selepas itu, ia membina rentetan baharu dengan menggabungkan subrentetan sebelum dan selepas setiap kedudukan anjakan yang mungkin. Kaedah ini kembali benar jika rentetan beralih ke kiri atau kanan adalah serupa dalam rentetan yang dikehendaki. Jika ini tidak berlaku, kembalikan palsu.

Dalam fungsi utama, kami mentakrifkan dua contoh rentetan dan sasaran, dan menggunakan rentetan ini untuk memanggil kaedah Rentetan Beralih. Program ini kemudiannya menunjukkan sama ada sasaran ialah bentuk anjakan s.

#include <iostream>
#include <string>

using namespace std;

bool isShiftedString(string s, string target) {
   if(s.length() != target.length()) {
      return false;
   }
   int n = s.length();
   for(int i = 0; i < n; i++) {
      string leftShift = s.substr(i) + s.substr(0, i); // left shift the string
      string rightShift = s.substr(n-i) + s.substr(0, n-i); // right shift the string
      if(leftShift == target || rightShift == target) {
         return true;
      }
   }
   return false;
}

int main() {
   string s = "abcde";
   string target = "cdeab";
   if(isShiftedString(s, target)) {
      cout << "The string is shifted." << endl;
   } else {
      cout << "The string is not shifted." << endl;
   }
   return 0;
}
Salin selepas log masuk

Output

The string is shifted.
Salin selepas log masuk

Kaedah 2: Semak subrentetan

Untuk menentukan sama ada rentetan yang lebih kecil ialah sebahagian daripada rentetan yang lebih panjang, anda boleh menggunakan kaedah "semak subrentetan". Proses ini melibatkan membandingkan subrentetan individu dengan panjang yang sama dengan rentetan yang lebih kecil dengan rentetan yang lebih kecil itu sendiri sambil mengulangi rentetan yang lebih panjang. Jika dua rentetan sepadan, ini mengesahkan bahawa rentetan yang lebih pendek sememangnya subset daripada teks yang lebih besar. Untuk menambah kerumitan dan variasi dalam panjang ayat pada esei, idea itu harus dipecahkan kepada bahagian yang mudah tetapi menarik.

Tatabahasa

Sintaks berikut boleh digunakan untuk menentukan sama ada anjakan kiri dan kanan mana-mana rentetan menghasilkan rentetan yang dibekalkan -

if (string_to_check_in.find(substring_to_check) != -1):
   //Substring found in string, so it is a left or right shift
else:
   //Substring not found, so it is not a left or right shift
Salin selepas log masuk

Algoritma

Algoritma berikut digunakan untuk menentukan sama ada anjakan kiri dan kanan rentetan menghasilkan rentetan yang disediakan −

Langkah 1 - Mula menaip rentetan input dan rentetan sasaran.

Langkah 2 - Sahkan bahawa panjang rentetan input dan panjang rentetan sasaran adalah sama. Jika tidak sama, False dikembalikan.

Langkah 3 − Untuk membina jujukan baharu, rentetan input mesti digabungkan dengan rentetan keluaran.

Langkah 4 - Perbandingan diperlukan untuk mengesahkan sama ada rentetan input disertakan dalam urutan yang baru dibina.

Langkah 5 - Jika dua rentetan itu betul-betul sama, jawapannya tidak boleh dipersoalkan jika tidak, jawapannya adalah tidak.

Terjemahan bahasa Cina bagi

Contoh 2

ialah:

Contoh 2

Ini ialah kod C++ yang menentukan sama ada peralihan ke kiri dan kanan mana-mana rentetan akan menghasilkan rentetan tertentu -

此示例研究了两个数组s1和s2之间的连接,以观察它们是否共享任何相似的字符串。通过坚持s1和s2的长度需要相同的前提,它们被合并为一个名为"s1s1"的数组。进一步对该数组进行分析,以确定是否可以找到s2的一部分,搜索的结果将输出"true"或"false"。这种技术提供了对关联的基本反应,用于进一步评估s1和s2的左右字段,以确认两个数组之间的关联。

#include <iostream>
#include <string>

using namespace std;

bool checkForSubstring(string s1, string s2) {
   if (s1.length() != s2.length()) {
      return false;
   }
    
   string s1s1 = s1 + s1;
    
   if (s1s1.find(s2) != string::npos) {
      return true;
   }
    
   return false;
}
int main() {
   string s1 = "abcd";
   string s2 = "cdab";
    
   if (checkForSubstring(s1, s2)) {
      cout << "Yes, left or right shift of string " << s1 << " results in " << s2 << endl;
   } else {
      cout << "No, left or right shift of string " << s1 << " does not result in " << s2 << endl;
   }
   return 0;
}
Salin selepas log masuk

输出

Yes, left or right shift of string abcd results in cdab
Salin selepas log masuk

结论

我们得到了一个字符串用于这个主题,我们需要确定这个字符串是否可以通过反复应用左移和右移来生成。

将提供的字符串与自身连接起来,并确定新字符串是否保留了原始字符串,这样可以解决这个问题。如果是的话,对字符串本身执行左移和右移操作将得到原始字符串。

作为一种替代方案,我们可以遍历每个移位位置,看看是否有任何移位后的字符串与输入字符串匹配。

解决方案的时间复杂度在这两种情况下都是O(n2),其中n是字符串的长度。ft和任何字符串的右移都会导致给定的字符串−

Atas ialah kandungan terperinci Semak sama ada anjakan kiri dan kanan mana-mana rentetan akan menghasilkan rentetan yang diberikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1266
29
Tutorial C#
1239
24
Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Mar 26, 2024 am 11:45 AM

Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Dalam pembangunan PHP, kita sering menghadapi keperluan untuk menukar jenis int kepada jenis rentetan. Penukaran ini boleh dicapai dalam pelbagai cara Artikel ini akan memperkenalkan beberapa kaedah biasa secara terperinci, dengan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Gunakan fungsi terbina dalam PHP strval(). PHP menyediakan fungsi terbina dalam strval() yang boleh menukar pembolehubah jenis yang berbeza kepada jenis rentetan. Apabila kita perlu menukar jenis int kepada jenis rentetan,

Bagaimana untuk mengulangi rentetan dalam python_python mengulangi tutorial rentetan Bagaimana untuk mengulangi rentetan dalam python_python mengulangi tutorial rentetan Apr 02, 2024 pm 03:58 PM

1. Mula-mula buka pycharm dan masukkan halaman utama pycharm. 2. Kemudian buat skrip python baru, klik kanan - klik baru - klik pythonfile. 3. Masukkan rentetan, kod: s="-". 4. Kemudian anda perlu mengulang simbol dalam rentetan sebanyak 20 kali, kod: s1=s*20 5. Masukkan kod output cetakan, kod: print(s1). 6. Akhir sekali jalankan skrip dan anda akan melihat nilai pulangan kami di bahagian bawah: - diulang 20 kali.

Bagaimana untuk menentukan sama ada rentetan Golang berakhir dengan aksara yang ditentukan Bagaimana untuk menentukan sama ada rentetan Golang berakhir dengan aksara yang ditentukan Mar 12, 2024 pm 04:48 PM

Tajuk: Bagaimana untuk menentukan sama ada rentetan berakhir dengan aksara tertentu dalam Golang Dalam bahasa Go, kadangkala kita perlu menentukan sama ada rentetan berakhir dengan aksara tertentu Ini adalah perkara biasa semasa memproses rentetan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan fungsi ini dan memberikan contoh kod untuk rujukan anda. Mula-mula, mari kita lihat cara untuk menentukan sama ada rentetan berakhir dengan aksara tertentu dalam Golang. Aksara dalam rentetan dalam Golang boleh diperoleh melalui pengindeksan, dan panjang rentetan itu boleh

Cara memintas rentetan dalam bahasa Go Cara memintas rentetan dalam bahasa Go Mar 13, 2024 am 08:33 AM

Bahasa Go ialah bahasa pengaturcaraan yang berkuasa dan fleksibel yang menyediakan fungsi pemprosesan rentetan yang kaya, termasuk pemintasan rentetan. Dalam bahasa Go, kita boleh menggunakan kepingan untuk memintas rentetan. Seterusnya, kami akan memperkenalkan secara terperinci cara memintas rentetan dalam bahasa Go, dengan contoh kod khusus. 1. Gunakan penghirisan untuk memintas rentetan Dalam bahasa Go, anda boleh menggunakan ungkapan menghiris untuk memintas sebahagian daripada rentetan. Sintaks ungkapan slice adalah seperti berikut: slice:=str[start:end]where, s

Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Mar 12, 2024 pm 09:42 PM

Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Apabila pengaturcaraan di Golang, anda sering menghadapi situasi di mana anda perlu menyemak sama ada rentetan bermula dengan aksara tertentu. Untuk memenuhi keperluan ini, kita boleh menggunakan fungsi yang disediakan oleh pakej rentetan di Golang untuk mencapainya. Seterusnya, kami akan memperkenalkan secara terperinci cara menggunakan Golang untuk menyemak sama ada rentetan bermula dengan aksara tertentu, dengan contoh kod tertentu. Di Golang, kita boleh menggunakan HasPrefix daripada pakej rentetan

Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar perenambelasan kepada rentetan dalam PHP Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar perenambelasan kepada rentetan dalam PHP Mar 04, 2024 am 09:36 AM

Kaedah untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar rentetan perenambelasan dalam PHP Dalam pengaturcaraan PHP, kadangkala kita menghadapi situasi di mana kita perlu menukar rentetan heksadesimal kepada aksara Cina biasa. Walau bagaimanapun, dalam proses penukaran ini, kadangkala anda akan menghadapi masalah aksara Cina yang kacau. Artikel ini akan memberi anda kaedah untuk menyelesaikan masalah aksara Cina yang bercelaru apabila menukar perenambelasan kepada rentetan dalam PHP dan memberikan contoh kod khusus. Gunakan fungsi hex2bin() untuk penukaran heksadesimal PHP terbina dalam fungsi hex2bin() boleh menukar 1

Petua Padanan Rentetan PHP: Elakkan Ungkapan Disertakan Kabur Petua Padanan Rentetan PHP: Elakkan Ungkapan Disertakan Kabur Feb 29, 2024 am 08:06 AM

Petua Padanan Rentetan PHP: Elakkan Ungkapan Disertakan Kabur Dalam pembangunan PHP, pemadanan rentetan ialah tugas biasa, biasanya digunakan untuk mencari kandungan teks tertentu atau untuk mengesahkan format input. Walau bagaimanapun, kadangkala kita perlu mengelak daripada menggunakan ungkapan kemasukan yang tidak jelas untuk memastikan ketepatan padanan. Artikel ini akan memperkenalkan beberapa teknik untuk mengelakkan ungkapan kemasukan yang samar-samar semasa melakukan pemadanan rentetan dalam PHP dan memberikan contoh kod khusus. Gunakan fungsi preg_match() untuk padanan tepat Dalam PHP, anda boleh menggunakan preg_mat

Penjelasan terperinci tentang pengubahsuaian rentetan Golang: pelarasan dinamik dan kebolehubahan Penjelasan terperinci tentang pengubahsuaian rentetan Golang: pelarasan dinamik dan kebolehubahan Apr 08, 2024 pm 03:27 PM

Rentetan dalam GoLang, walaupun tidak boleh diubah, boleh diubah suai secara dinamik menggunakan teknik berikut: menggabungkan rentetan menggunakan penggabungan rentetan. Buat rentetan baharu menggunakan pemformatan rentetan. Ubah suai kepingan bait asas rentetan. Gunakan jenis rentetan boleh ubah yang disediakan oleh perpustakaan pihak ketiga.

See all articles