दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन आहेत का ते तपासा


अडचण पातळी सोपे
वारंवार विचारले फेसबुक
अक्षरमाळा

दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन आम्हाला दोन प्रदान करतात की नाही हे तपासा अ‍ॅरे तारांचे. नंतर हे दोन स्ट्रिंग अ‍ॅरे समतुल्य आहेत का ते तपासण्यास सांगितले जाते. येथे समतेचा अर्थ असा आहे की जर अ‍ॅरे मधील तारांना कंटेनेट केले तर. नंतर कॉन्टेन्टेशन नंतर, दोन्ही तार समान किंवा समान असतील. समाधानात खोलवर जाण्यापूर्वी, प्रथम आपण काही उदाहरणे पाहू या.

उदाहरणे

word1[] = {"ab", "c"}
word2[] = {"a", "bc"}
true

स्पष्टीकरणः जर आपण सर्व तार एकत्रित केले तर दोन्ही अ‍ॅरे “एबीसी” बनवतात. तर, ते समतुल्य आहेत.

दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन आहेत का ते तपासा

दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन असल्यास तपासणीसाठी दृष्टिकोन

समस्येने आम्हाला तारांचे दोन अ‍ॅरे दिले. इतरांपेक्षा दोघांपैकी एकामध्ये अधिक तार असू शकतात. परंतु जेव्हा कॉंकॅन्टेट केले जाईल, तेव्हा दोन्ही परिणामी तारा समान असतील. जर ते समान असेल तर आम्ही सत्य परत येऊ आणि आम्ही खोट्या परतलो.
आता सोपा आणि अंमलात आणण्यास सोपा उपाय म्हणजे प्रत्येक अ‍ॅरे मधील सर्व स्ट्रिंग ओलांडणे. ट्रॅव्हर्सिंग करताना, आम्ही स्ट्रिंग्स कॉन्टेनेट करतो आणि दोन परिणामी स्ट्रिंग तयार करतो. तर, या कॉन्टेन्टेसन ऑपरेशन नंतर, तार समान आहेत का ते तपासू. परंतु या ऑपरेशनसाठी आम्हाला तार तयार करण्याची आवश्यकता आहे. अशा प्रकारे प्रक्रियेस अतिरिक्त जागेची आवश्यकता आहे. परंतु आम्ही जास्तीची जागा न वापरता समस्या सोडवू शकतो.
आम्ही प्रत्येक अ‍ॅरेसाठी चार व्हेरिएबल्स वापरू. हे व्हेरिएबल्स अ‍ॅरे मधील निर्देशांक आणि नंतर स्ट्रिंगसाठी निर्देशांक म्हणून कार्य करतील. अशा प्रकारे त्यापैकी दोघे आम्हाला सांगतील की ते पहिल्या अ‍ॅरेमधील i1 व्या स्ट्रिंगच्या j1 व्या वर्णात आहेत. त्याचप्रमाणे, आय 2 व्या स्ट्रिंगचे जे 2 व्ही वर्ण आय 2 आणि जे 2 द्वारे दर्शविले जाते. आता बाकी सर्व अंमलबजावणी आहे.
आम्ही थोडा लूप वापरतो ज्यामध्ये आम्ही काही कंडिशन्स तपासतो. जर दोन्ही अ‍ॅरेमधील वर्तमान वर्ण जुळत नाहीत तर आम्ही चुकीचे परत येऊ. अन्यथा आम्ही स्ट्रिंगच्या शेवटच्या चारित्र्यावर आहोत की नाही ते तपासतो. जर तसे झाले तर आम्ही स्ट्रिंग (i) साठी वापरलेला निर्देशांक वाढवितो आणि वर्ण अनुक्रमणिका (j) 0 वर सेट करतो. अन्यथा, फक्त वाढ j. शेवटी, जर दोन्ही अ‍ॅरे एकाच वेळी संपुष्टात आल्या तर आम्ही खर्‍याकडे परत जाऊ, अन्यथा खोटे.

कोड

दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन असल्यास चेकसाठी सी ++ कोड

#include <bits/stdc++.h>
using namespace std;

bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
    int i1 = 0, j1 = 0, i2 = 0, j2 = 0;
    while(true){
        if(word1[i1][j1] != word2[i2][j2]) return false;
        if(j1 == word1[i1].size()-1)i1++, j1 = 0;
        else j1++;
        if(j2 == word2[i2].size()-1)i2++, j2 = 0;
        else j2++;
        if(i1 == word1.size() && i2 == word2.size())
            return true;
        else if(i1 == word1.size() || i2 == word2.size())
            return false;
    }
}

int main() {
  vector<string> word1 = {"ab", "c"};
  vector<string> word2 = {"a", "bc"};
  cout<<(arrayStringsAreEqual(word1, word2) ? "true" : "false");
  return 0;
}
true

दोन स्ट्रिंग अ‍ॅरे समतुल्य लीटकोड सोल्यूशन असल्यास चेकसाठी जावा कोड

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static boolean arrayStringsAreEqual(String[] word1, String[] word2) {
        int i1 = 0, j1 = 0, i2 = 0, j2 = 0;
        while(true){
            if(word1[i1].charAt(j1) != word2[i2].charAt(j2)) return false;
            if(j1 == word1[i1].length()-1){i1++; j1 = 0;}
            else j1++;
            if(j2 == word2[i2].length()-1){i2++; j2 = 0;}
            else j2++;
            if(i1 == word1.length && i2 == word2.length)
                return true;
            else if(i1 == word1.length || i2 == word2.length)
                return false;
        }
    }

  public static void main (String[] args) throws java.lang.Exception
  {
    String[] word1 = {"ab", "c"};
    String[] word2 = {"a", "bc"};
    System.out.print((arrayStringsAreEqual(word1, word2) ? "true" : "false"));
    return 0;
  }
}
true

गुंतागुंत विश्लेषण

वेळ कॉम्प्लेक्सिटी

ओ (मि (एन, एम)), कारण आम्ही छोट्या तारांच्या प्रत्येक वर्णातून जात आहोत. येथे एन आणि एम अनुक्रमे पहिल्या अ‍ॅरे आणि दुसर्‍या अ‍ॅरे मधील वर्णांची संख्या दर्शवितात.

स्पेस कॉम्प्लेक्सिटी

ओ (1), कारण आम्ही सतत व्हेरिएबल्स वापरत आहोत.