สมมติว่าเรามีสตริง 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