একটি ছোট হাতের অ্যালফানিউমেরিক স্ট্রিং s দেওয়া আছে। স্ট্রিং-এ থাকা সব নন-ডিজিট ক্যারেক্টারকে স্পেস দিয়ে রিপ্লেস করলে কিছু পূর্ণসংখ্যা পাওয়া যায় যা কমপক্ষে এক স্পেস দিয়ে পৃথক। অবদি শূন্য বাদ দিয়ে দশমিক রূপে ভিন্ন পূর্ণসংখ্যাগুলোর সংখ্যা বের করতে হবে।
যেমন, s = "ab12fg012th5er67" হলে আউটপুট ৩। কারণ পাওয়া সংখ্যাগুলো: ["12", "012", "5", "67"]। "12" এবং "012" স্ট্রিং হিসেবে ভিন্ন কিন্তু পূর্ণসংখ্যা হিসেবে একই। তাই ৩টি ভিন্ন পূর্ণসংখ্যা।
সমাধানের ধাপসমূহ
- nums := খালি লিস্ট, k := খালি স্ট্রিং
- s-এর প্রতিটি ক্যারেক্টার i এর জন্য:
- যদি ASCII 48-57 এর মধ্যে হয় (ডিজিট), তবে k += s[i]
- অন্যথায়, যদি k খালি না হয়, তবে nums-এ int(k) যোগ করুন, k := ""
- লুপ শেষে যদি k খালি না হয়, তবে nums-এ int(k) যোগ করুন।
- nums-এ ইউনিক উপাদান সংখ্যা ফেরত দিন।
উদাহরণ
def solve(s):
nums = []
k = ""
for i in range(len(s)):
if ord(s[i]) > 47 and ord(s[i]) < 58:
k += s[i]
else:
if k != "":
nums.append(int(k))
k = ""
if k != "":
nums.append(int(k))
return len(set(nums))
s = "ab12fg012th5er67"
print(solve(s))
ইনপুট
"ab12fg012th5er67"
আউটপুট
3