CodeGym /Java Blog /यादृच्छिक /Java मध्ये सबस्ट्रिंग
John Squirrels
पातळी 41
San Francisco

Java मध्ये सबस्ट्रिंग

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
जावामधील स्ट्रिंगवरील सर्वात लोकप्रिय क्रिया म्हणजे संकलित करणे, अनुक्रमणिकेनुसार एक वर्ण मिळवणे आणि सबस्ट्रिंग मिळवणे. या लेखात आम्ही तुम्हाला जावा सबस्ट्रिंग पद्धतीबद्दल सांगणार आहोत.

जावा सबस्ट्रिंग म्हणजे काय?

जावा सबस्ट्रिंग हा सर्वसाधारणपणे स्ट्रिंगमधील वर्णांचा सलग क्रम असतो. तो स्ट्रिंगचा एक भाग किंवा संपूर्ण स्ट्रिंग देखील असू शकतो. जावा मध्ये सबस्ट्रिंग - 2Java मध्ये सबस्ट्रिंग म्हणजे काय? या भाषेत substring() पद्धत आहे, किंवा त्याऐवजी दोन पद्धती आहेत, Java मेथड ओव्हरलोडिंगमुळे. तुम्ही त्यांचा वापर Java प्रोग्राममध्ये सबस्ट्रिंग मिळवण्यासाठी करू शकता. पहिली जावा सबस्ट्रिंग पद्धत म्हणजे स्ट्रिंग सबस्ट्रिंग (फर्स्टइंडेक्स) आणि दुसरी स्ट्रिंग सबस्ट्रिंग (फर्स्टइंडेक्स, लास्टइंडेक्स) आहे .

Java मध्ये सबस्ट्रिंग कसे वापरावे

उत्तर सोपे आहे: फक्त सबस्ट्रिंग वापरा. Java substring() पद्धत स्ट्रिंगचा एक भाग परत करते. यासाठी तुम्ही दोन पद्धती वापरू शकता:
सबस्ट्रिंग पद्धतीचे वाक्यरचना स्ट्रिंग सबस्ट्रिंग (प्रथम निर्देशांक) स्ट्रिंग सबस्ट्रिंग (प्रथम इंडेक्स, लास्ट इंडेक्स)
युक्तिवाद firstIndex ही तुमच्या स्ट्रिंगमधील एक संख्या आहे जी तुमच्या सबस्ट्रिंगची पहिली अनुक्रमणिका आहे. समावेशक. तुमच्या सबस्ट्रिंगची शेवटची संख्या ही संपूर्ण स्ट्रिंगची शेवटची संख्या आहे firstIndex ही तुमच्या स्ट्रिंगमधील एक संख्या आहे जी तुमच्या सबस्ट्रिंगची पहिली अनुक्रमणिका आहे. समावेशक.
lastIndex ही तुमच्या स्ट्रिंगची संख्या आहे, प्रथम आणि नंतर ती तुमच्या सबस्ट्रिंगमधून वगळली जाते
Java मध्ये सबस्ट्रिंग कसे वापरायचे याची उदाहरणे

String s = "CodeGym";
System.out.println(s.substring(4));
//returns Gym

String s = "CodeGym"; 
System.out.println(s.substring(2,5));
//returns deG
खूप लोकप्रिय कार्ये जी तुम्हाला समजण्यास मदत करतात
  • Java मध्ये सबस्ट्रिंग कसे मिळवायचे
  • दिलेल्या स्ट्रिंगचे सर्व सबस्ट्रिंग कसे शोधायचे
  • सर्वात लांब सामान्य सबस्ट्रिंग कसे शोधायचे

Java मध्ये सबस्ट्रिंग कसे मिळवायचे (विशेष)

हे पहिले Java सबस्ट्रिंग उदाहरण खूपच सोपे आहे. तुमच्याकडे एक स्ट्रिंग आहे आणि तुम्हाला त्यात "कोडजिम" सबस्ट्रिंग शोधण्याची आवश्यकता आहे. Java मध्ये सबस्ट्रिंग कसे मिळवायचे हे तुम्हाला आधीच माहित आहे. तर या विशिष्ट समस्येचे निराकरण येथे आहे:

import java.io.IOException;

public class Main {

   public static void main(String[] args) throws IOException {

       String s1 = "the best Java Core course is CourseCodeGym.  End of story";
       String myTarget = "CodeGym";
       int index1 = s1.indexOf(myTarget);
      
       int index2 = index1 + myTarget.length();
       System.out.println(s1.substring(index1, index2));

   }
}
आउटपुट आहे: CodeGym प्रक्रिया निर्गमन कोड 0 सह समाप्त झाली 0 दिलेल्या स्ट्रिंगचे सर्व सबस्ट्रिंग कसे शोधायचे येथे दिलेल्या स्ट्रिंगचे सर्व सबस्ट्रिंग शोधण्याचा सर्वात सोपा मार्ग आहे.

import java.io.IOException;
public class Main {
   public static void main(String[] args) throws IOException {
       String myTarget = "CodeGym";
       for (int i = 0; i < myTarget.length(); i++) {
           for (int j = i + 1; j <= myTarget.length(); j++) {
               System.out.println(myTarget.substring(i, j));
           }
       }    
   }
}
आउटपुट असे आहे: C Co Cod Code CodeG CodeGy CodeGym o od ode ode odeG odeGy odeGym d de deG deGy deGym e eG eGy eGym G Gy जिम y ym m एक्झिट कोडसह प्रक्रिया पूर्ण झाली 0 सर्वात लांब सामान्य सबस्ट्रिंग कशी शोधायची सर्वात लांब सामान्य सबस्ट्रिंग समस्या संगणक विज्ञानातील सर्वात लोकप्रिय कार्यांपैकी एक आहे. तुम्ही ते तुमच्या कनिष्ठ विकासकाच्या मुलाखतीत खूप उच्च संभाव्यतेसह भेटू शकता. असो, ते सोडवण्याचा प्रयत्न करा, नवशिक्या प्रोग्रामरसाठी हा एक अतिशय उपयुक्त व्यायाम आहे. सर्वात लांब सामान्य सबस्ट्रिंग समस्या म्हणजे सर्वात लांब स्ट्रिंग (किंवा त्यापैकी काही) शोधणे जे दोन किंवा अधिक स्ट्रिंगचे सबस्ट्रिंग (किंवा सबस्ट्रिंग आहेत) आहे. उदाहरणार्थ तुमच्याकडे दोन तार आहेत

String first = "CodeGym" 
String second = "SomeGym"
आउटपुट असे असावे: eGym त्यामुळे, तुम्हाला "प्रथम" आणि "सेकंड" स्ट्रिंग करावे लागतील. सर्वात लांब सामान्य सबस्ट्रिंग मुद्रित करा. सर्वात लांब सामान्य सबस्ट्रिंगसाठी दोन किंवा अधिक सबस्ट्रिंगचे मूल्य समान असल्यास, त्यापैकी कोणतेही मुद्रित करा. आम्ही तुम्हाला या समस्येचे निराकरण करण्याचा प्रयत्न करण्याची जोरदार शिफारस करतो आणि त्यानंतरच खालील कोड पहा.

public class SubStringTest {

   //  in this method we are looking for the Longest common substring of
   // first String with length = m  and the second String with length = n
   public static String longestCS(String first, String second, int m, int n) {
       // the maximal length
       int maxLength = 0;
       // the last index of the longest common substring
       int endIndex = m;

       // array stores the length of substring
       int[][] keeper = new int[m + 1][n + 1];

       for (int i = 1; i <= m; i++) {
           for (int j = 1; j <= n; j++) {
               // check if current characters of first and second strings match
               if (first.charAt(i - 1) == second.charAt(j - 1)) {
                   keeper[i][j] = keeper[i - 1][j - 1] + 1;
                  
                   if (keeper[i][j] > maxLength) {
                       maxLength = keeper[i][j];
                       endIndex = i;
                   }
               }
           }
       }
       return first.substring(endIndex - maxLength, endIndex);
   }


   public static void main(String[] args) {
       String first = "CodeGym";
       String second = "SomeGym";
       int m = first.length(), n = second.length();
       System.out.println("The longest common substring = " + longestCS(first, second, m, n));
   }
}
आउटपुट आहे: सर्वात लांब सामान्य सबस्ट्रिंग = eGym

Java मध्ये सबस्ट्रिंग कसे कार्य करते

JDK 7 आणि नवीन आवृत्त्यांमध्ये, substring() यापुढे कॅरेक्टर अॅरेमधील वर्णांची संख्या मोजत नाही, जसे की JDK 6 समावेशी आधीच्या आवृत्त्यांमध्ये होते, परंतु फक्त मेमरीमध्ये एक नवीन अॅरे तयार करते (ढीग) आणि त्याचा संदर्भ देते. . येथे एक उदाहरण आहे:

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
तर, JDK 7 आणि नंतर, ऑब्जेक्ट x वर लागू केलेल्या substring() पद्धतीचा परिणाम म्हणून तयार केलेले ऑब्जेक्ट्स y आणि z हे दोन नव्याने तयार केलेल्या अॅरेचा संदर्भ घेतील (ढीगवर) - y साठी {d,e, G, y} आणि z साठी {C , o} मेथड सबस्ट्रिंगच्या JDK 7 + आवृत्तीमध्ये, या दोन नवीन ओळी (म्हणजेच, दोन नवीन कॅरेक्टर अॅरे) मूळ स्ट्रिंग myLongString ({ C, o, d, e, G, y, m, ) सोबत मेमरीमध्ये संग्रहित केल्या जातील. i, s, t, h, e, b,e,s,t} अॅरेच्या स्वरूपात) .

सबस्ट्रिंगची JDK 6 आवृत्ती

आजही काही मोठ्या प्रकल्पांवर तुम्ही JDK कडून 6 वेळा लीगेसी कोड बेस भेटू शकता. JDK 6 मेथड सबस्ट्रिंग () मध्ये वेगळ्या पद्धतीने काम करते. तुम्हाला माहीत असेलच की, स्ट्रिंग हा एक अपरिवर्तनीय वर्ग आहे आणि सबस्ट्रिंग मिळवण्यासाठी Java ने ही अपरिवर्तनीयता आधी JDK 6 मध्ये वापरली होती. आतमध्ये स्ट्रिंग प्रकाराचा ऑब्जेक्ट फक्त अक्षरांचा एक अॅरे आहे, किंवा त्याऐवजी, वर्णांचा अॅरे आहे. JDK 6 च्या वेळी, तेथे आणखी दोन व्हेरिएबल्स संग्रहित केले गेले: वर्ण अॅरेमधील पहिल्या वर्णाची संख्या आणि त्यांचे प्रमाण. अशाप्रकारे, JDK 6 मध्ये, स्ट्रिंगमध्ये चार मूल्य [] (कॅरेक्टर अ‍ॅरे), इंट ऑफसेट (अ‍ॅरेमधील पहिल्या वर्णाची अनुक्रमणिका) आणि इंट काउंटची तीन फील्ड होती.(अ‍ॅरेमधील वर्णांची संख्या). जेडीके 6 मध्ये सबस्ट्रिंग तयार केल्यावर, नवीन स्ट्रिंग ऑब्जेक्टमध्ये वर्णांची अॅरे कॉपी केली जात नाही . त्याऐवजी, दोन्ही ऑब्जेक्ट्स समान वर्ण अॅरेचा संदर्भ संग्रहित करतात. तथापि दुसरा ऑब्जेक्ट आणखी दोन व्हेरिएबल्स साठवतो, पहिले सबस्ट्रिंगचे चिन्ह आणि दुसरे सबस्ट्रिंगमध्ये किती चिन्हे आहेत. मेमरी लीक समस्येमुळे JDK 6 पद्धत बदलण्यात आली. याचा अर्थ काय? समजा आपल्याकडे स्ट्रिंग आहे xआणि आपण सबस्ट्रिंग वापरून दोन सबस्ट्रिंग्स तयार करू.

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
आता आपल्याकडे एक ऑब्जेक्ट x आहे ज्याला ढीग म्हणतात मेमरीच्या एका विशेष क्षेत्रामध्ये संग्रहित केले आहे आणि त्याच ऑब्जेक्ट x चा संदर्भ देणारी दोन वस्तू y आणि z आहेत . फक्त x हा दुसऱ्या ते सहाव्या घटकांचा संदर्भ देतो आणि z हा शून्यापासून तिसऱ्यापर्यंतच्या x घटकांचा संदर्भ देतो . जर मूळ ऑब्जेक्ट x आधीच वापरला गेला असेल आणि त्यावर कोणताही संदर्भ न ठेवता सोडला असेल तर? प्रोग्राममध्ये इतर सर्व ऑब्जेक्ट्स फक्त y आणि z सह कार्य करतात . या प्रकरणात कचरा गोळा करणारा ऑब्जेक्ट x नष्ट करू शकतो, मेमरी अॅरे शिल्लक असताना, आणि ते y आणि z द्वारे वापरले जाते. मेमरी लीक होते. तर, नवीन, JDK 7 आणि नंतरची आवृत्ती, मेमरी वापरण्याच्या दृष्टीने पद्धत खूपच महाग आहे. तथापि ते आपल्याला मेमरी गळती रोखण्यास अनुमती देते. याव्यतिरिक्त, नवीन पद्धत जलद कार्य करते, कारण त्यात वर्णांची संख्या मोजावी लागत नाही. तुम्ही जे शिकलात ते बळकट करण्यासाठी, आम्ही तुम्हाला आमच्या Java कोर्समधील व्हिडिओ धडा पाहण्याची सूचना देतो
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION