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

पायथन में वर्ड ब्रेक


मान लीजिए कि हमारे पास एक गैर-रिक्त स्ट्रिंग s और एक शब्दकोष wordDict है। इसमें गैर-रिक्त शब्दों की एक सूची है, यह निर्धारित करें कि कब s को एक या अधिक शब्दकोष शब्दों के स्थान-पृथक अनुक्रम में विभाजित किया जा सकता है। हमें कुछ नियमों का पालन करना होगा -

  • शब्दकोश में एक ही शब्द का विभाजन में कई बार पुन:उपयोग किया जा सकता है।
  • हम मान सकते हैं कि शब्दकोश में डुप्लिकेट शब्द नहीं हैं।

मान लीजिए कि स्ट्रिंग s ="applepenapple", और शब्द शब्दकोष ["apple", "pen"] जैसा है, तो आउटपुट सही होगा क्योंकि स्ट्रिंग s को "ऐप्पल पेन ऐप्पल" के रूप में विभाजित किया जा सकता है।

आइए चरणों को देखें -

  • क्रम n x n के एक मैट्रिक्स DP को परिभाषित करें। n =स्ट्रिंग का आकार, और इसे असत्य से प्रारंभ करें
  • i के लिए 1 से लंबाई s की सीमा में
    • j के लिए 0 से लेकर s की लंबाई तक - i
      • यदि शब्दकोश में s[j से j + 1] को प्रतिस्थापित करते हैं, तो dp[j, j+i - 1] :=True
      • अन्यथा
        • k के लिए j + 1 से j + i की श्रेणी में
          • अगर dp[j, k-1] और dp[k, j + i – 1], तो dp[j, j + i – 1] :=True
  • रिटर्न DP[0, लंबाई s - 1]

उदाहरण (पायथन)

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

class Solution(object):
   def wordBreak(self, s, wordDict):
      dp = [[False for i in range(len(s))] for x in range(len(s))]
      for i in range(1,len(s)+1):
         for j in range(len(s)-i+1):
            #print(s[j:j+i])
            if s[j:j+i] in wordDict:
               dp[j][j+i-1] = True
            else:
               for k in range(j+1,j+i):
                  if dp[j][k-1] and dp[k][j+i-1]:
                     dp[j][j+i-1]= True
      return dp[0][len(s) - 1]
ob1 = Solution()
print(ob1.wordBreak("applepenapple", ["apple", "pen"]))

इनपुट

"applepenapple"
["apple", "pen"]

आउटपुट

true

  1. पायथन में मैट्रिक्स को इनिशियलाइज़ करें

    इस लेख में, हम सीखेंगे कि हम पायथन 3.x में द्वि-आयामी सूची का उपयोग करके मैट्रिक्स को कैसे प्रारंभ कर सकते हैं। या पहले। आइए एक मैट्रिक्स को इनिशियलाइज़ करने का सहज तरीका देखें जो केवल पायथन भाषा प्रदान करता है। यहां हम लिस्ट कॉम्प्रिहेंशन का लाभ उठाते हैं। हम इनर लिस्ट को इनिशियलाइज़ करते हैं और फ

  1. पायथन का उपयोग करके वर्ड क्लाउड बनाएं

    इस समस्या में कुछ टेक्स्ट वाली फ़ाइल है। हमें उन टेक्स्ट और एक मास्किंग इमेज से वर्ड क्लाउड बनाना है। प्रोग्राम क्लाउड इमेज शब्द को png . के रूप में संग्रहीत करेगा प्रारूप। इस समस्या को लागू करने के लिए, हमें अजगर के कुछ पुस्तकालयों का उपयोग करने की आवश्यकता है। पुस्तकालय matplotlib, Wordcloud, num

  1. पायथन में लूप के लिए कैसे तोड़ें?

    आम तौर पर लूप के लिए एक श्रेणी में प्रत्येक आइटम के लिए एक ब्लॉक पर पुनरावृति करने के लिए बनाया गया है। यदि सभी पुनरावृत्तियों को पूरा करने से पहले लूप की समयपूर्व समाप्ति की मांग की जाती है, तो ब्रेक कीवर्ड का उपयोग किया जाता है। यह हमेशा लूप के शरीर के अंदर एक सशर्त बयान में प्रयोग किया जाता है fo