Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาดัชนี i เช่นคำนำหน้าของ S1 และส่วนต่อท้ายของ S2 จนกระทั่งฉันสร้าง palindrome เมื่อต่อใน C ++


แนวคิด

ด้วยความเคารพของสองสตริงที่กำหนด S1 และ S2 ที่มีความยาวเท่ากัน หน้าที่ของเราคือกำหนดดัชนี i โดยที่ S1[0…i] และ S2[i+1…n-1] ให้พาลินโดรมเมื่อต่อกัน จะเห็นได้ว่าหากไม่สามารถระบุดัชนีดังกล่าวได้ก็ให้พิมพ์ -1

อินพุต

S1 = “pqrsu”, S2 = “wxyqp”

ผลลัพธ์

1

S1[0..1] =“pq”, S2[2..n-1] =“ypq”

S1 + S2 =“pqyqp” แสดงว่าเป็นพาลินโดรม

อินพุต

S1 = “pqrst”, S2 = “qprqz”

ผลลัพธ์

-1

วิธีการ

  • ในตอนแรก เราวนซ้ำจาก 0 ถึง n (ความยาวของสตริง) และคัดลอกอักขระ ith จาก S1 ไปยังสตริงอื่น (สมมติว่าเป็น S)
  • หลังจากนั้น เราใช้ temp สตริงชั่วคราวและคัดลอกอักขระของ S2 จากดัชนี i +1 ถึง n
  • สุดท้าย เราตรวจสอบว่าสตริง (S + temp) เป็น palindrome หรือไม่

ตัวอย่าง

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Shows function that returns true if s is palindrome
bool isPalindrome(string str){
   int i = 0;
   int b = str.length() - 1;
   while (i< b) {
      if (str[i] != str[b])
         return false;
      i++;
      b--;
   }
   return true;
}
// Shows function to return the required index
int getIndex1(string S1, string S2, int n){
   string S = "";
   for (int i = 0; i< n; a++) {
      // Used to copy the ith character in S
      S = S + S1[i];
      string temp = "";
      // Used to copy all the character of string s2 in Temp
      for (int b = i + 1; b < n; b++)
         temp += S2[b];
      // Verify whether the string is palindrome
      if (isPalindrome(S + temp)) {
         return i;
      }
   }
   return -1;
}
// Driver code
int main(){
   string S1 = "pqrsu", S2 = "wxyqp";
   int n = S1.length();
   cout << getIndex1(S1, S2, n);
   return 0;
}

ผลลัพธ์

1