मान लीजिए कि हमारे पास समान लंबाई n के तीन तार S, T और U हैं। 0 से n-1 तक के प्रत्येक सूचकांक के लिए, हमें U[i] को S[i] या T[i] के साथ स्वैप करना चाहिए। तो कुल मिलाकर हमने n स्वैपिंग ऑपरेशन किए हैं। हमें यह जांचना होगा कि क्या इस तरह के n ऑपरेशन के बाद हम स्ट्रिंग S को बिल्कुल T के समान बना सकते हैं।
इसलिए, यदि इनपुट S ="abc" जैसा है; टी ="बीसीए"; यू ="बीसीए", तो आउटपुट सही होगा, क्योंकि सभी के लिए अगर हम यू [i] को एस [i] के साथ स्वैप करते हैं, तो यह "बीसीए" होगा, और टी पहले से ही "बीसीए" है।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
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