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

पायथन में O(1) अतिरिक्त स्थान में जांचें कि स्ट्रिंग के वर्ण पालिंड्रोम बनाते हैं या नहीं


मान लीजिए हमारे पास एक स्ट्रिंग s है। इस स्ट्रिंग में लोअरकेस वर्ण, अन्य विशेष वर्ण और संख्याएं हो सकती हैं। हमें जांचना है कि स्ट्रिंग में मौजूद केवल अक्षर पालिंड्रोमिक हैं या नहीं। यहां एक प्रतिबंध है कि हमें इस समस्या को हल करने के लिए अतिरिक्त स्थान का उपयोग करने की अनुमति नहीं है।

उदाहरण के लिए, यदि s = "ra$5ce58car" है, तो आउटपुट True होगा, क्योंकि अक्षर "racecar" बनाते हैं जो पालिंड्रोम है।

हल करने का तरीका

  1. दो हेल्पर फ़ंक्शन परिभाषित करें: first_letter_index() और last_letter_index() जो बाएं और दाएं से पहला अक्षर ढूंढते हैं
  2. left := 0, right := स्ट्रिंग की लंबाई - 1
  3. flag := True
  4. लूप में:
    • left को बाएं से पहला अक्षर पर सेट करें
    • right को दाएं से पहला अक्षर पर सेट करें
    • यदि right < 0 या left < 0, तो लूप तोड़ें
    • यदि str[left] == str[right], तो left बढ़ाएं, right घटाएं, जारी रखें
    • अन्यथा flag := False, लूप तोड़ें
  5. flag लौटाएं

उदाहरण कोड

def first_letter_index(str, left, right):
    index = -1
    for i in range(left, right + 1):
        if 'a' <= str[i] <= 'z':
            index = i
            break
    return index

def last_letter_index(str, left, right):
    index = -1
    for i in range(left, right - 1, -1):
        if 'a' <= str[i] <= 'z':
            index = i
            break
    return index

def solve(str):
    left = 0
    right = len(str) - 1
    flag = True
    for i in range(len(str)):
        left = first_letter_index(str, left, right)
        right = last_letter_index(str, right, left)
        if right < 0 or left < 0:
            break
        if str[left] == str[right]:
            left += 1
            right -= 1
            continue
        flag = False
        break
    return flag

s = "ra$5ce58car"
print(solve(s))

इनपुट

"ra$5ce58car"

आउटपुट

True
  1. पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग वॉयल पालिंड्रोम है या नहीं पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग वॉयल पालिंड्रोम है या नहीं

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक स्ट्रिंग दी गई है (जिसमें स्वर और व्यंजन दोनों अक्षर हैं), सभी व्यंजनों को हटाएं, फिर जांचें कि परिणामी स्ट्रिंग पालिंड्रोम है या नहीं। यहां हम पहले स्ट्रिंग में मौजूद सभी व्यंजनों को हटाते हैं। एक लूप से विभाजकों की गणना क

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

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें यह जांचने के लिए एक पायथन प्रोग्राम जनरेट करना होगा कि वह स्ट्रिंग पैंग्राम है या नहीं। एक पैंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी

  1. - स्ट्रिंग के दोनों हिस्सों में समान वर्ण सेट है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण एक स्ट्रिंग दी गई है, हमारा कार्य यह जांचना है कि स्ट्रिंग के दोनों हिस्सों में समान वर्ण सेट है या नहीं। इस समस्या को हल करने के लिए हम पहले स्ट्रिंग को बीच से विभाजित करते हैं, ताकि दो हिस्से मिलें। अब हम जांचते हैं कि दोनों हिस्सों में समान वर्ण सेट है या नहीं। यदि स्ट्रिंग की लंबाई