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

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

สมมติว่าเรามีสตริง 3 ตัว 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" อยู่แล้ว

ขั้นตอนการแก้ปัญหา

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

สำหรับ i := 0 เมื่อ S[i] ไม่เป็นศูนย์ เพิ่ม i ทีละ 1 ทำ:    ถ้า S[i] ไม่เท่ากับ U[i] และ T[i] ไม่เท่ากับ U[i] แล้ว:       คืนค่า false    คืนค่า 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