Rumah > Artikel > pembangunan bahagian belakang > Subrentetan terpanjang di mana aksara bersebelahan tidak mempunyai huruf Inggeris bersebelahan
Dalam bidang manipulasi rentetan, mengenal pasti corak dan mengekstrak subrentetan yang bermakna adalah tugas biasa. Masalah menarik melibatkan mencari subrentetan terpanjang di mana tiada aksara bersebelahan adalah huruf Inggeris bersebelahan. Dalam artikel ini, kami akan menyelidiki penyelesaian yang cekap untuk masalah ini menggunakan C++ dan memberikan penjelasan yang jelas serta contoh kes ujian.
Memandangkan rentetan huruf Inggeris huruf kecil, kita perlu mencari panjang subrentetan terpanjang di mana tiada aksara bersebelahan adalah huruf Inggeris bersebelahan. Contohnya, dalam rentetan "abacabx", subrentetan terpanjang yang memenuhi syarat ini ialah "abx", dengan panjang 3.
Untuk menyelesaikan masalah ini, kita boleh menggunakan kaedah tamak. Kami akan mengulangi rentetan yang diberikan dan menyemak sama ada aksara semasa dan aksara sebelumnya adalah huruf Inggeris bersebelahan. Jika ya, kita mulakan subrentetan baharu. Jika tidak, kami mengembangkan subrentetan sedia ada. Dengan mengemas kini subrentetan terpanjang setiap kali panjangnya melebihi maksimum sebelumnya, kita boleh mencari hasil yang diingini.
Ini adalah kod C++ yang menyelesaikan masalah &tolak,
#include <iostream> #include <string> using namespace std; int findLongestSubstring(const string& str) { int maxLength = 0; int currentLength = 1; for (int i = 1; i < str.length(); i++) { if (abs(str[i] - str[i - 1]) != 1) { currentLength++; } else { maxLength = max(maxLength, currentLength); currentLength = 1; } } maxLength = max(maxLength, currentLength); return maxLength; } int main() { string inputString = "abacabx"; int longestSubstringLength = findLongestSubstring(inputString); cout << "Longest substring length: " << longestSubstringLength << endl; return 0; }
Longest substring length: 3
Fungsi findLongestSubstring menerima rentetan input sebagai parameter dan mengembalikan panjang subrentetan terpanjang bagi aksara abjad Inggeris bukan bersebelahan.
Kami memulakan maxLength dan currentLength masing-masing kepada 0 dan 1. Kemudian kami mengulangi rentetan bermula dari aksara kedua. Jika perbezaan mutlak antara aksara semasa dan aksara sebelumnya tidak sama dengan 1, Panjang semasa dinaikkan untuk memanjangkan subrentetan semasa. Jika tidak, jika panjang semasa melebihi maksimum sebelumnya, kami mengemas kini maxLength dan menetapkan semula currentLength kepada 1.
Akhir sekali, kami mengembalikan panjang maksimum yang ditemui. Dalam fungsi utama, kami menyediakan rentetan input sampel "abacabx" dan mencetak panjang subrentetan terpanjang.
Mari kita pertimbangkan contoh rentetan "abacabx" untuk menunjukkan penyelesaian kami.
Masuk
string inputString = "abacabx";
Dalam contoh ini, subrentetan terpanjang tanpa aksara abjad Inggeris bersebelahan ialah "abx", dengan panjang 3.
Dengan menggunakan kaedah yang mudah dan cekap, kami berjaya menyelesaikan masalah mencari subrentetan huruf Inggeris bukan bersebelahan terpanjang menggunakan C++. Memahami kod dan penjelasan yang diberikan akan membolehkan anda menyelesaikan masalah serupa yang melibatkan manipulasi rentetan.
Atas ialah kandungan terperinci Subrentetan terpanjang di mana aksara bersebelahan tidak mempunyai huruf Inggeris bersebelahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!