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

C++ में Delete Operations for Two Strings


मान लीजिए हमारे पास दो शब्द w1 और w2 हैं, हमें w1 और w2 को समान बनाने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढनी है, जहां प्रत्येक चरण में हम किसी भी स्ट्रिंग में एक वर्ण हटा सकते हैं। इसलिए यदि इनपुट "sea" और "eat" जैसा है, तो आउटपुट 2 होगा, क्योंकि हमें w1 से 's' हटाना होगा, यह "ea" हो जाएगा और w2 से "eat" से "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
  • i को 1 से n तक की रेंज में
    • j को 1 से m तक की रेंज में
      • यदि s1[i] = s2[j]
        • dp[i, j] := dp[i - 1, j - 1]
      • अन्यथा dp[i, j] = dp[i - 1, j] + 1 और dp[i, j - 1] + 1 का न्यूनतम
  • dp[n, m] लौटाएं

उदाहरण (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++ में दो बाइनरी स्ट्रिंग्स को जोड़ें C++ में दो बाइनरी स्ट्रिंग्स को जोड़ें

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

  1. C++ में दो रेखाओं के प्रतिच्छेदन बिंदु के लिए प्रोग्राम C++ में दो रेखाओं के प्रतिच्छेदन बिंदु के लिए प्रोग्राम

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

  1. - C++ में दो स्ट्रिंग्स को जोड़ने (Concatenate) का प्रोग्राम

    एक स्ट्रिंग एक एक-आयामी कैरेक्टर सरणी है जो नल कैरेक्टर द्वारा समाप्त होती है। दो स्ट्रिंग्स का संयोजन (Concatenation) उन्हें जोड़कर एक नई स्ट्रिंग बनाना है। उदाहरण के लिए। स्ट्रिंग 1: Mangoes are स्ट्रिंग 2: tasty 2 स्ट्रिंग्स का संयोजन: Mangoes are tasty दो स्ट्रिंग्स को जोड़ने का एक प्रोग्राम निम