সমস্যা বিবরণ
একটি নম্বর লিস্ট দেওয়া আছে। যেসব নম্বরের ডিজিট সংখ্যা সম (even), তাদের কাউন্ট করতে হবে।
উদাহরণ: [12, 345, 2, 6, 7896] → আউটপুট ২ (কারণ ১২ এবং ৭৮৯৬-এ সম সংখ্যক ডিজিট)।
সমাধানের পদ্ধতি
- লিস্টের প্রতিটি ইন্টিজারকে স্ট্রিং-এ কনভার্ট করুন।
- স্ট্রিংয়ের দৈর্ঘ্য (len) চেক করুন - যদি সম হয় (len % 2 == 0) তবে কাউন্ট বাড়ান।
- শেষে কাউন্ট ফেরত দিন।
পাইথন উদাহরণ
class Solution(object):
def findNumbers(self, nums):
str_num = map(str, nums)
count = 0
for s in str_num:
if len(s) % 2 == 0:
count += 1
return count
ob1 = Solution()
print(ob1.findNumbers([12, 345, 2, 6, 7897]))
ইনপুট
[12, 345, 2, 6, 7897]
আউটপুট
2
বিকল্প পদ্ধতি (গাণিতিক)
import math
def findNumbers(nums):
count = 0
for num in nums:
# ডিজিট সংখ্যা = floor(log10(num)) + 1
digits = int(math.log10(num)) + 1 if num > 0 else 1
if digits % 2 == 0:
count += 1
return count