কম্পিউটার

পাইথনে স্ট্রিংয়ের উভয় অংশে অন্তত একটি ভিন্ন অক্ষর আছে কিনা তা পরীক্ষা করুন


ধরুন আমাদের একটি ছোট হাতের স্ট্রিং আছে; আমাদের পরীক্ষা করতে হবে যে আমরা স্ট্রিংটিকে মাঝখান থেকে বিভক্ত করতে পারি যা দুটি অর্ধেক দেবে যাতে দুটি পক্ষের মধ্যে অন্তত এক-অক্ষরের পার্থক্য থাকে। এটি বিভিন্ন অক্ষর বা প্রতিটি অক্ষরের বিভিন্ন ফ্রিকোয়েন্সি ধারণ করতে পারে। যদি স্ট্রিংটি বিজোড় দৈর্ঘ্যের স্ট্রিং হয়, তাহলে মাঝের উপাদানটিকে উপেক্ষা করুন এবং অবশিষ্ট উপাদানগুলি পরীক্ষা করুন৷

সুতরাং, যদি ইনপুটটি s ="helloohekk" এর মত হয়, তাহলে আউটপুটটি True হবে "helloohekk" হিসাবে তাই বাম অংশ "hello" ডান অংশ "ohekk" বাম এবং ডান ভিন্ন।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • left_freq :=একটি খালি মানচিত্র
  • right_freq :=একটি খালি মানচিত্র
  • n :=s এর আকার
  • আমি পরিসীমা 0 থেকে (n/2) - 1 এর ভাগফলের জন্য, কর
    • left_freq[s[i]] :=left_freq[s[i]] + 1
  • আমি (n/2) থেকে n - 1 পর্যন্ত রেঞ্জের ভাগফলের জন্য, কর
    • right_freq[s[i]] :=right_freq[s[i]] + 1
  • s এর প্রতিটি অক্ষরের জন্য, করুন
    • যদি right_freq[char] বাম_freq[char] এর মত না হয়, তাহলে
      • সত্য ফেরান
  • মিথ্যে ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

from collections import defaultdict
def solve(s):
   left_freq = defaultdict(int)
   right_freq = defaultdict(int)
   n = len(s)
   for i in range(n//2):
      left_freq[s[i]] += 1
   for i in range(n//2, n):
      right_freq[s[i]] += 1
   for char in s:
      if right_freq[char] != left_freq[char]:
         return True
   return False
s = "helloohekk"
print(solve(s))

ইনপুট

"helloohekk"

আউটপুট

True

  1. প্রদত্ত স্ট্রিং প্যানগ্রাম কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  2. দুটি তালিকায় অন্তত একটি সাধারণ উপাদান আছে কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  3. একটি স্ট্রিং একটি অক্ষর পাইথনে একটি অক্ষর কিনা তা কিভাবে পরীক্ষা করবেন?

  4. পাইথনে একটি স্ট্রিং অন্তত একটি অক্ষর এবং একটি সংখ্যা আছে কিনা তা কিভাবে পরীক্ষা করবেন?