मान लीजिए हमारे पास एक अल्फान्यूमेरिक स्ट्रिंग s है। हमें इसे निम्न शर्त के आधार पर सॉर्ट करना है:
- सभी सॉर्ट किए गए लोअरकेस अक्षर अपरकेस अक्षरों से पहले रखे जाएंगे
- सभी सॉर्ट किए गए अपरकेस अक्षर अंकों से पहले रखे जाएंगे
- सभी सॉर्ट किए गए विषम अंक सम अंकों से पहले रखे जाएंगे
उदाहरण के लिए, यदि इनपुट s = "HeLlo1234" है, तो आउटपुट eloHL1324 होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- f() नामक एक फंक्शन परिभाषित करें जो c लेता है
- code := 0
- यदि c अपरकेस में है, तो
- code := 10^3
- अन्यथा जब c अंक है, तो
- code := 10^6
- यदि c का ASCII मान सम है, तो
- code := 10^9
- code + c का ASCII मान लौटाएं
- मुख्य विधि से निम्न करें
- l := s की सॉर्ट की गई सूची और s में प्रत्येक वर्ण c को f() फंक्शन कॉल करके ऑर्डर करें
- l में प्रत्येक वर्ण को जोड़ें और लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def f(c):
code = 0
if c.isupper():
code = 10 ** 3
elif c.isdigit():
code = 10 ** 6
if ord(c) % 2 == 0:
code = 10 ** 9
return code + ord(c)
def solve(s):
l = sorted(s, key=lambda c: f(c))
return ''.join(l)
s = "HeLlo1234"
print(solve(s))इनपुट
"HeLlo1234"
आउटपुट
eloHL1324