Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में दो स्ट्रिंग्स को बराबर बनाने के लिए आवश्यक न्यूनतम प्रीप्रोसेसिंग चालें खोजें


मान लीजिए हमारे पास केवल निचले मामले के अक्षरों वाली समान लंबाई की दो स्ट्रिंग्स P और Q हैं, हमें स्ट्रिंग P पर आवश्यक न्यूनतम प्री-प्रोसेसिंग चालों की गिनती करनी है ताकि नीचे दिए गए ऑपरेशंस लागू करने के बाद यह स्ट्रिंग Q के बराबर हो जाए:

  • कोई भी इंडेक्स i चुनें और वर्ण pi और qi को स्वैप करें।

  • कोई भी इंडेक्स i चुनें और वर्ण pi और p(n-i-1) को स्वैप करें।

  • कोई भी इंडेक्स i चुनें और वर्ण qi और q(n-i-1) को स्वैप करें।

नोट - i का मान रेंज (0 ≤ i < n) में है।

एक चाल में हम P के किसी वर्ण को अंग्रेजी वर्णमाला के किसी अन्य वर्ण में बदल सकते हैं।

तो, यदि इनपुट P = "pqprpqp", Q = "qprpqpp" जैसा है, तो आउटपुट 4 होगा क्योंकि यदि हम P0 = 'q', P2 = 'r', P3 = 'p' और P4 = 'q' सेट करते हैं तो P "qqrpqqp" हो जाएगा। उसके बाद हम निम्नलिखित ऑपरेशन क्रम से स्ट्रिंग्स को बराबर कर सकते हैं: swap(P1, Q1) और swap(P1, P5)।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • n := P का आकार

  • res := 0

  • i को 0 से n/2 तक के लिए, करें:

    • my_map := एक नया मैप

    • my_map[P[i]] := 1

    • यदि P[i], P[n-i-1] के समान है, तो:

      • my_map[P[n-i-1]] := my_map[P[n-i-1]] + 1

    • यदि Q[i], my_map में है, तो:

      • my_map[Q[i]] := my_map[Q[i]] + 1

    • अन्यथा,

      • my_map[Q[i]] := 1

    • यदि Q[n-i-1], my_map में है, तो:

      • my_map[Q[n-1-i]] := my_map[Q[n-1-i]] + 1

    • अन्यथा,

      • my_map[Q[n-1-i]] := 1

    • size := my_map का आकार

    • यदि size 4 के समान है, तो:

      • res := res + 2

    • अन्यथा जब size 3 के समान है, तो:

      • res := res + 1 + (1 जब (P[i], P[n-i-1] के समान है), अन्यथा 0)

    • अन्यथा जब size 2 के समान है, तो:

      • res := res + (my_map[P[i]] 2 के समान नहीं है)

  • यदि n mod 2, 1 के समान है और P[n/2], Q[n/2] के समान नहीं है, तो:

    • res := res + 1

  • res लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

def count_preprocess(P, Q):    n = len(P)    res = 0    for i in range(n // 2):       my_map = dict()       my_map[P[i]] = 1       if P[i] == P[n - i - 1]:          my_map[P[n - i - 1]] += 1       if Q[i] in my_map:          my_map[Q[i]] += 1       else:          my_map[Q[i]] = 1       if Q[n - i - 1] in my_map:          my_map[Q[n - 1 - i]] += 1       else:          my_map[Q[n - 1 - i]] = 1       size = len(my_map)       if (size == 4):          res += 2       elif (size == 3):          res += 1 + (P[i] == P[n - i - 1])       elif (size == 2):          res += my_map[P[i]] != 2    if (n % 2 == 1 and P[n // 2] != Q[n // 2]):       res += 1    return res A = "pqprpqp" B = "qprpqpp" print(count_preprocess(A, B))

इनपुट

"pqprpqp", "qprpqpp"

आउटपुट

4

  1. - पायथन में समान सबस्ट्रिंग्स के जोड़े की संख्या खोजने का प्रोग्राम

    मान लीजिए हमें दो स्ट्रिंग्स दी गई हैं, दोनों लोअरकेस अल्फाबेट से बनी हैं। हमें उन क्वाड्रपल्स (p, q, r, s) की संख्या ढूंढनी है जो निम्नलिखित शर्तों को पूरा करते हैं: 0 <= p <= q <= पहली स्ट्रिंग की लंबाई। 0 <= r <= s <= दूसरी स्ट्रिंग की लंबाई। पहली स्ट्रिंग में इंडेक्स p से शुर

  1. - Python में ऐरे को पूरक बनाने के लिए न्यूनतम चाल खोजने का प्रोग्राम

    मान लीजिए हमारे पास सम लंबाई का एक ऐरे nums और एक मान limit है। एक चाल में, हम nums से किसी भी मान को 1 और limit के बीच किसी अन्य मान से बदल सकते हैं। ऐरे को पूरक कहा जाता है यदि सभी इंडेक्स i के लिए, nums[i] + nums[n-1-i] समान संख्या के बराबर हो। तो हमें nums को पूरक बनाने के लिए आवश्यक न्यूनतम चा

  1. पायथन में शतरंज के टुकड़े के लिए हर पोजीशन तक पहुंचने के लिए न्यूनतम चालें खोजने का प्रोग्राम पायथन में शतरंज के टुकड़े के लिए हर पोजीशन तक पहुंचने के लिए न्यूनतम चालें खोजने का प्रोग्राम

    मान लीजिए, हमारे पास एक शतरंज बोर्ड और एक विशेष नाइट पीस K है, जो बोर्ड के भीतर L आकार में चलता है। यदि पीस (x1, y1) स्थिति में है और यह (x2, y2) पर चलता है तो गति को इस प्रकार वर्णित किया जा सकता है: x2 = x1 ± a; y2 = y1 ± b या x2 = x1 ± b; y2 = y1 ± a; जहां a और b पूर्णांक हैं। हमें उस शतरंज के ट