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

पायथन में जांचें कि स्ट्रिंग के सभी वर्णों की आवृत्ति समान है (एक वैरिएशन के साथ)

मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है। हमें यह जांचना है कि क्या हम अधिकतम 1 वर्ण हटाकर s को एक वैध स्ट्रिंग में बदल सकते हैं। यहां वैध स्ट्रिंग का अर्थ है एक स्ट्रिंग str जहां str के सभी अद्वितीय वर्णों की आवृत्ति समान हो।

उदाहरण के लिए, यदि इनपुट s = "xyyzx" है, तो आउटपुट True होगा क्योंकि हम 'z' को हटा सकते हैं तब स्ट्रिंग "xyyx" होगी जहां x और y की घटनाएं समान हैं।

समाधान दृष्टिकोण

हम प्रत्येक वर्ण की आवृत्ति गिनते हैं, फिर जांचते हैं कि क्या अधिकतम दो अलग-अलग आवृत्तियां हैं और क्या उनमें से एक को एक वर्ण हटाकर समायोजित किया जा सकता है।

एल्गोरिदम चरण:

  1. आकार 26 का occurrence ऐरे बनाएं (प्रत्येक लोअरकेस अक्षर के लिए)
  2. स्ट्रिंग के प्रत्येक वर्ण की आवृत्ति गिनें
  3. पहली गैर-शून्य आवृत्ति occr1 और उसकी गिनती occr1_cnt ढूंढें
  4. दूसरी अलग आवृत्ति occr2 और उसकी गिनती occr2_cnt ढूंढें
  5. शेष सभी गैर-शून्य आवृत्तियों के लिए जांचें कि वे occr1 या occr2 के बराबर हैं
  6. यदि occr1_cnt > 1 और occr2_cnt > 1, तो False लौटाएं
  7. True लौटाएं

पायथन कार्यान्वयन

def solve(s):
    size = 26
    occurrence = [0] * size
    
    for ch in s:
        occurrence[ord(ch) - ord('a')] += 1
    
    # पहली गैर-शून्य आवृत्ति ढूंढें
    occr1 = 0
    occr1_cnt = 0
    for i in range(size):
        if occurrence[i] != 0:
            occr1 = occurrence[i]
            occr1_cnt = 1
            break
    
    # दूसरी अलग आवृत्ति ढूंढें
    occr2 = 0
    occr2_cnt = 0
    for j in range(i + 1, size):
        if occurrence[j] != 0:
            if occurrence[j] == occr1:
                occr1_cnt += 1
            else:
                occr2_cnt = 1
                occr2 = occurrence[j]
                break
    
    # शेष आवृत्तियों की जांच करें
    for k in range(j + 1, size):
        if occurrence[k] != 0:
            if occurrence[k] == occr1:
                occr1_cnt += 1
            elif occurrence[k] == occr2:
                occr2_cnt += 1
            else:
                return False
    
    if occr1_cnt > 1 and occr2_cnt > 1:
        return False
    return True

s = "xyyzx"
print(solve(s))  # True

इनपुट

"xyyzx"

आउटपुट

True

व्याख्या:

"xyyzx" में आवृत्तियां: x=2, y=2, z=1

  • आवृत्ति 2: दो अक्षर (x, y)
  • आवृत्ति 1: एक अक्षर (z)

z को हटाने पर (आवृत्ति 1 वाला अक्षर), सभी की आवृत्ति 2 हो जाती है। वैध!

  1. पायथन प्रोग्राम: जांचें कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं पायथन प्रोग्राम: जांचें कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें यह ढूंढना होगा कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं। दृष्टिकोण हम बूलियन वैल्यूज़ का एक ऐरे बनाएंगे, जहां इंडेक्स i पर वेरिएबल फ्लैग

  1. - पायथन में कैसे जांचें कि स्ट्रिंग में कम से कम एक लेटर और एक नंबर है?

    पायथन में इसकी जांच करने का सबसे आसान तरीका नियमित अभिव्यक्तियों का उपयोग करना है। यह जांचने के लिए कि दी गई स्ट्रिंग में कम से कम एक लेटर और एक नंबर है, हम re.match(regex, string) का उपयोग करते हैं। उदाहरण import re print(bool(re.match(^(?=.*[0-9]$)(?=.*[a-zA-Z]), hasAlphanum123))) print(bool(re.ma

  1. - पायथन में कैसे जांचें कि स्ट्रिंग सफिक्स की सूची में से किसी से समाप्त होती है?

    पायथन में स्ट्रिंग क्लास में endswith(tuple) मेथड होता है। यह मेथड उन स्ट्रिंग्स का एक टुपल स्वीकार करता है जिन्हें आप खोजना चाहते हैं और एक स्ट्रिंग ऑब्जेक्ट पर कॉल किया जाता है। आप इस मेथड को निम्न प्रकार से कॉल कर सकते हैं: string = core java print(string.endswith((txt, xml, java, orld))) आउटपुट: