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

โปรแกรมตรวจสอบเราสามารถแทนที่อักขระเพื่อสร้างสตริงเป็นสตริงอื่นได้หรือไม่ใน C++


สมมติว่าเรามีสตริงตัวพิมพ์เล็กสองตัว s และ t ตอนนี้ให้พิจารณาการดำเนินการที่เราแทนที่การเกิดขึ้นทั้งหมดของอักขระใน s ด้วยอักขระอื่น หากเราสามารถดำเนินการนี้ได้หลายครั้ง เราต้องตรวจสอบว่า s สามารถแปลงเป็น t ได้หรือไม่

ดังนั้น หากอินพุตเป็น s ="eye" t ="pip" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถแทนที่ "e" ด้วย "p" ตามด้วย "y" ด้วย "i"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดหนึ่งแผนที่ m1 และอีกแผนที่ m2

  • n :=ขนาดของ s

  • สำหรับการเริ่มต้น i :=0 เมื่อ i

    • ถ้า s[i] อยู่ใน m1 แล้ว −

      • ถ้า m1[s[i]] เหมือนกับ t[i] แล้ว −

        • ไปอ่านตอนต่อไป

      • คืนค่าเท็จ

    • มิฉะนั้น

      • m1[s[i]] :=t[i]

  • คืนความจริง

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
bool solve(string s, string t) {
   map m1, m2;
   int n = s.size();
   for(int i = 0; i <n; i++){
      if(m1.count(s[i])){
         if(m1[s[i]] == t[i]) continue;
            return false;
      }
      else{
         m1[s[i]] = t[i];
      }
   }
   return true;
}
int main(){
   string s = "eye", t = "pip";
   cout << solve(s, t);
}

อินพุต

"eye","pip"

ผลลัพธ์

1