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

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


สมมติว่าเรามีสามสาย S, T และ U ที่มีความยาวเท่ากัน n สำหรับทุกดัชนี i ในช่วง 0 ถึง n-1 เราต้องสลับ U[i] ด้วย S[i] หรือ T[i] โดยรวมแล้วเราได้ดำเนินการสลับ n ครั้ง เราต้องตรวจสอบว่าหลังจากการดำเนินการ n ดังกล่าวเราสามารถสร้างสตริง S เหมือนกับ T ได้หรือไม่

ดังนั้น ถ้าอินพุตเป็น S ="abc"; T ="bca"; U ="bca" ผลลัพธ์จะเป็น True เพราะสำหรับ i ทั้งหมด ถ้าเราสลับ U[i] กับ S[i] มันจะเป็น "bca" และ T เป็น "bca" อยู่แล้ว

ขั้นตอน

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

for initialize i := 0, when S[i] is non-zero, update (increase i by 1), do:
   if S[i] is not equal to U[i] and T[i] is not equal to U[i], then:
      return false
   return true

ตัวอย่าง

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

#include <bits/stdc++.h>
using namespace std;

bool solve(string S, string T, string U) {
   for (int i = 0; S[i]; ++i)
      if (S[i] != U[i] && T[i] != U[i])
         return false;
   return true;
}
int main() {
   string S = "abc";
   string T = "bca";
   string U = "bca";
   cout << solve(S, T, U) << endl;
}

อินพุต

"abc", "bca", "bca"

ผลลัพธ์

1