CodeGym /Java Blog /এলোমেলো /জাভাতে সাবস্ট্রিং
John Squirrels
লেভেল 41
San Francisco

জাভাতে সাবস্ট্রিং

এলোমেলো দলে প্রকাশিত
জাভাতে স্ট্রিং- এর সবচেয়ে জনপ্রিয় অ্যাকশন হল সংমিশ্রণ, সূচী অনুসারে একটি অক্ষর পাওয়া এবং একটি সাবস্ট্রিং পাওয়া। এই নিবন্ধে আমরা আপনাকে জাভা সাবস্ট্রিং পদ্ধতি সম্পর্কে বলতে যাচ্ছি।

জাভা সাবস্ট্রিং কি?

জাভা সাবস্ট্রিং সাধারণভাবে স্ট্রিং-এর ভিতরে অক্ষরের একটি সংলগ্ন ক্রম। এটি স্ট্রিং বা পুরো স্ট্রিংয়ের একটি অংশও হতে পারে। জাভাতে সাবস্ট্রিং - 2জাভাতে সাবস্ট্রিং কি? এই ভাষার একটি সাবস্ট্রিং() পদ্ধতি, বা বরং দুটি পদ্ধতি রয়েছে, জাভা পদ্ধতি ওভারলোডিংয়ের জন্য ধন্যবাদ। আপনি জাভা প্রোগ্রামে সাবস্ট্রিং পেতে এগুলি ব্যবহার করতে পারেন। প্রথম জাভা সাবস্ট্রিং পদ্ধতি হল স্ট্রিং সাবস্ট্রিং (প্রথম সূচক) এবং দ্বিতীয়টি হল স্ট্রিং সাবস্ট্রিং (প্রথম সূচক, শেষ সূচক)

জাভাতে সাবস্ট্রিং কীভাবে ব্যবহার করবেন

উত্তরটি সহজ: শুধু সাবস্ট্রিং ব্যবহার করুন। Java substring() পদ্ধতি স্ট্রিং এর একটি অংশ প্রদান করে। এর জন্য আপনি দুটি পদ্ধতি ব্যবহার করতে পারেন:
সাবস্ট্রিং পদ্ধতির সিনট্যাক্স স্ট্রিং সাবস্ট্রিং (প্রথম সূচক) স্ট্রিং সাবস্ট্রিং (প্রথম সূচক, শেষ সূচক)
যুক্তি firstIndex হল আপনার স্ট্রিং এর একটি সংখ্যা যা আপনার সাবস্ট্রিং এর প্রথম সূচক। অন্তর্ভুক্ত. আপনার সাবস্ট্রিংয়ের শেষ সংখ্যাটি পুরো স্ট্রিংয়ের শেষ সংখ্যা firstIndex হল আপনার স্ট্রিং এর একটি সংখ্যা যা আপনার সাবস্ট্রিং এর প্রথম সূচক। অন্তর্ভুক্ত.
lastIndex হল আপনার স্ট্রিং এর সংখ্যা, প্রথমে এবং সব পরে আপনার সাবস্ট্রিং থেকে বাদ দেওয়া হয়
জাভাতে সাবস্ট্রিং কীভাবে ব্যবহার করবেন তার উদাহরণ

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

String s = "CodeGym"; 
System.out.println(s.substring(2,5));
//returns deG
খুব জনপ্রিয় কাজ যা আপনাকে বুঝতে সাহায্য করে
  • কিভাবে জাভাতে একটি সাবস্ট্রিং পেতে হয়
  • একটি প্রদত্ত স্ট্রিং এর সব সাবস্ট্রিং কিভাবে খুঁজে বের করতে হয়
  • দীর্ঘতম সাধারণ সাবস্ট্রিং কীভাবে খুঁজে পাবেন

কীভাবে জাভাতে একটি সাবস্ট্রিং পাবেন (বিশেষ করে)

এই প্রথম জাভা সাবস্ট্রিং উদাহরণটি বেশ সহজ। আপনি একটি স্ট্রিং পেয়েছেন এবং আপনাকে এটিতে একটি সাবস্ট্রিং "কোডজিম" খুঁজে বের করতে হবে। আপনি ইতিমধ্যেই জানেন কিভাবে জাভাতে একটি সাবস্ট্রিং পেতে হয়। সুতরাং এখানে এই বিশেষ সমস্যার সমাধান:

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 দিয়ে কিভাবে একটি প্রদত্ত স্ট্রিং-এর সব সাবস্ট্রিং খুঁজে বের করা যায়

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 Gym 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

কিভাবে সাবস্ট্রিং জাভাতে কাজ করে

JDK 7 এবং নতুন সংস্করণে, substring() আর এটি তৈরি করা ক্যারেক্টার অ্যারেতে অক্ষরের সংখ্যা গণনা করে না, যেমনটি JDK 6 এর পূর্বের সংস্করণগুলিতে করেছিল, তবে কেবল মেমরিতে একটি নতুন অ্যারে তৈরি করে (হিপ) এবং এটিকে নির্দেশ করে . এখানে একটি উদাহরণ:

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
সুতরাং, JDK 7 এবং পরবর্তীতে, অবজেক্ট x- এ প্রয়োগ করা সাবস্ট্রিং() পদ্ধতির ফলে তৈরি অবজেক্ট 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 পদ্ধতিতে সাবস্ট্রিং() একটি ভিন্ন উপায়ে কাজ করে। আপনি সম্ভবত জানেন, স্ট্রিং একটি অপরিবর্তনীয় শ্রেণী এবং সাবস্ট্রিং পেতে জাভা এই অপরিবর্তনীয়তাটি আগে JDK 6-এ ব্যবহার করেছিল। স্ট্রিং- এর অভ্যন্তরে অবজেক্টটি কেবল অক্ষরের একটি অ্যারে, অথবা বরং, অক্ষরের একটি অ্যারে রয়েছে। JDK 6 এর সময়ে, সেখানে আরও দুটি ভেরিয়েবল সংরক্ষণ করা হয়েছিল: অক্ষর অ্যারের প্রথম অক্ষরের সংখ্যা এবং তাদের পরিমাণ। এইভাবে, JDK 6-এ, স্ট্রিং- এর চার মান [] (ক্যারেক্টার অ্যারে), int অফসেট (অ্যারের প্রথম অক্ষরের সূচক) এবং int কাউন্টের তিনটি ক্ষেত্র ছিল।(অ্যারেতে অক্ষরের সংখ্যা)। যখন JDK 6 এ একটি সাবস্ট্রিং তৈরি করা হয়, তখন অক্ষরের অ্যারে নতুন স্ট্রিং অবজেক্টে কপি করা হয় না। এর পরিবর্তে, উভয় অবজেক্ট একই ক্যারেক্টার অ্যারের একটি রেফারেন্স সঞ্চয় করে। তবে দ্বিতীয় অবজেক্টটি আরও দুটি ভেরিয়েবল সঞ্চয় করে, প্রথমটি সাবস্ট্রিং-এর প্রতীক এবং দ্বিতীয়টি হল সাবস্ট্রিং-এ কতগুলি চিহ্ন রয়েছে। মেমরি লিক সমস্যার কারণে JDK 6 পদ্ধতি প্রতিস্থাপিত হয়েছিল। এর মানে কী? ধরা যাক আমাদের একটি স্ট্রিং আছে x, এবং আমরা সাবস্ট্রিং ব্যবহার করে কয়েকটি সাবস্ট্রিং তৈরি করি।

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
এখন আমাদের কাছে একটি অবজেক্ট x আছে যাকে মেমরির একটি বিশেষ এলাকায় স্তূপ বলা হয় এবং দুটি বস্তু y এবং z একই বস্তুকে উল্লেখ করে x । শুধুমাত্র x দ্বিতীয় থেকে ষষ্ঠ উপাদান বোঝায়, এবং z শূন্য থেকে তৃতীয় x উপাদান বোঝায় । যদি আসল অবজেক্ট x ইতিমধ্যেই ব্যবহার করা হয়ে থাকে এবং এতে কোন রেফারেন্স ছাড়াই রেখে দেওয়া হয়? একটি প্রোগ্রামে অন্য সব অবজেক্ট শুধুমাত্র y এবং z দিয়ে কাজ করে। এই ক্ষেত্রে আবর্জনা সংগ্রহকারী বস্তু x ধ্বংস করতে পারে, যখন মেমরি অ্যারে থাকে, এবং এটি y এবং z দ্বারা ব্যবহৃত হয়। মেমরি লিক ঘটে। সুতরাং, নতুন, JDK 7 এবং পরবর্তী সংস্করণ, মেমরি ব্যবহারের ক্ষেত্রে পদ্ধতিটি বেশ ব্যয়বহুল। তবে এটি আপনাকে মেমরি লিক প্রতিরোধ করতে দেয়। উপরন্তু, নতুন পদ্ধতি দ্রুত কাজ করে, যেহেতু এটি অক্ষরের সংখ্যা গণনা করতে হবে না। আপনি যা শিখেছেন তা শক্তিশালী করার জন্য, আমরা আপনাকে আমাদের জাভা কোর্স থেকে একটি ভিডিও পাঠ দেখার পরামর্শ দিই
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION