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

सी ++ में दो स्ट्रिंग्स के लिए ऑपरेशन हटाएं


मान लीजिए कि हमारे पास दो शब्द w1 और w2 हैं, हमें w1 और w2 को समान बनाने के लिए आवश्यक चरणों की न्यूनतम संख्या ज्ञात करनी है, जहां प्रत्येक चरण में हम किसी भी स्ट्रिंग में एक वर्ण को हटा सकते हैं। . इसलिए यदि इनपुट "समुद्र" और "खाने" की तरह है, तो आउटपुट 2 होगा, क्योंकि हमें w1 से 's' को हटाना होगा, यह "ea" होगा और w2 से "ईट" से "t" को हटा देगा। फिर वे वही हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे

  • n :=s1 का आकार, m :=s2 का आकार
  • स्ट्रिंग्स s1 और s2 से पहले एक रिक्त स्थान जोड़ें, फिर s1 और s2 को तदनुसार अपडेट करें
  • आकार की एक तालिका बनाएं (n + 1) x (m + 1)
  • i के लिए :=1 से m
    • dp[0, i] :=dp[0, i - 1] + 1
  • i के लिए:=1 से n
    • dp[i, 0] :=dp[i – 1, 0] + 1
  • मैं के लिए 1 से n की सीमा में
    • जे के लिए 1 से मी की सीमा में
      • अगर s1[i] =s2[j]
        • dp[i, j] :=dp[i – 1, j-1]
      • else dp[i, j] =न्यूनतम dp[i-1, j] + 1 और dp[i, j-1] + 1
  • रिटर्न डीपी[एन, एम]

उदाहरण(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minDistance(string s1, string s2) {
      int n = s1.size();
      int m = s2.size();
      s1 = " " + s1;
      s2 = " " + s2;
      vector < vector <int> > dp(n + 1, vector <int>(m + 1));
      for(int i = 1; i <= m; i++){
         dp[0][i] = dp[0][i - 1] + 1;
      }
      for(int i = 1; i <= n; i++){
         dp[i][0] = dp[i - 1][0] + 1;
      }
      for(int i = 1; i <= n; i++){
         for(int j = 1; j <= m; j++){
            if(s1[i] == s2[j]){
               dp[i][j] = dp[i - 1][j - 1];
            }
            else{
               dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
            }
         }
      }
      return dp[n][m];
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,1};
   cout << (ob.minDistance("sea", "eat"));
}

इनपुट

"sea"
"eat"

आउटपुट

2

  1. C++ में दो बाइनरी स्ट्रिंग्स जोड़ने का प्रोग्राम

    बाइनरी नंबर के साथ दो स्ट्रिंग्स को देखते हुए, हमें उन दो बाइनरी स्ट्रिंग्स को जोड़कर प्राप्त परिणाम को खोजना होगा और परिणाम को बाइनरी स्ट्रिंग के रूप में वापस करना होगा। बाइनरी नंबर वे नंबर होते हैं जिन्हें या तो 0 या 1 के रूप में व्यक्त किया जाता है। 2 बाइनरी नंबर जोड़ते समय बाइनरी जोड़ नियम होता

  1. सी++ में दो लाइनों के चौराहे के बिंदु के लिए कार्यक्रम

    रेखा AB के संगत बिंदु A और B दिए गए हैं और रेखा PQ के संगत बिंदु P और Q दिए गए हैं; कार्य इन दो पंक्तियों के बीच प्रतिच्छेदन बिंदु को खोजना है। नोट - X और Y निर्देशांकों पर 2D समतल में अंक दिए गए हैं। यहाँ A(a1, a2), B(b1, b2) और C(c1, c2), D(d1, d2) निर्देशांक हैं जो दो अलग-अलग रेखाएँ बना रहे ह

  1. C++ प्रोग्राम दो स्ट्रिंग्स को जोड़ने के लिए

    एक स्ट्रिंग एक आयामी वर्ण सरणी है जिसे एक शून्य वर्ण द्वारा समाप्त किया जाता है। दो स्ट्रिंग्स का संयोजन एक नई स्ट्रिंग बनाने के लिए उनका जुड़ना है। उदाहरण के लिए। String 1: Mangoes are String 2: tasty Concatenation of 2 strings: Mangoes are tasty दो तारों को जोड़ने का कार्यक्रम इस प्रकार दिया गया