Palindrome String একটি স্ট্রিং যা সামনে থেকে পড়লে এবং পিছন থেকে পড়লেও একই থাকে। যেমন "madam", "racecar" ইত্যাদি।
Java তে একটি স্ট্রিং প্যালিনড্রোম কিনা তা যাচাই করতে আমরা বেশ কয়েকটি পদ্ধতি ব্যবহার করতে পারি। নিচে কয়েকটি উদাহরণ দেয়া হলো যেগুলি দিয়ে একটি স্ট্রিং প্যালিনড্রোম কিনা তা যাচাই করা যেতে পারে।
Palindrome String Check Example:
1. Using StringBuilder for Reverse Comparison:
এখানে StringBuilder এর reverse() মেথড ব্যবহার করা হয়েছে। আমরা স্ট্রিংটি উল্টানো এবং মূল স্ট্রিংয়ের সাথে তুলনা করছি।
public class PalindromeExample {
public static void main(String[] args) {
String str = "madam"; // স্ট্রিংটি চেক করতে হবে
// StringBuilder ব্যবহার করে প্যালিনড্রোম চেক করা
StringBuilder reversedStr = new StringBuilder(str);
reversedStr.reverse(); // স্ট্রিংটি উল্টানো
if (str.equals(reversedStr.toString())) {
System.out.println(str + " is a Palindrome.");
} else {
System.out.println(str + " is not a Palindrome.");
}
}
}
Output:
madam is a Palindrome.
Code Explanation:
- StringBuilder.reverse(): স্ট্রিংটি উল্টানোর জন্য
StringBuilderএরreverse()মেথড ব্যবহার করা হয়েছে। - equals() method: তারপর উল্টানো স্ট্রিংটি মূল স্ট্রিংয়ের সাথে তুলনা করা হয়েছে।
2. Using Loop to Compare Characters:
এখানে একটি লুপ ব্যবহার করে স্ট্রিংয়ের প্রথম এবং শেষ অক্ষর তুলনা করা হচ্ছে। যদি সব অক্ষর মিলিত হয়, তবে এটি প্যালিনড্রোম হবে।
public class PalindromeExample {
public static void main(String[] args) {
String str = "racecar"; // স্ট্রিংটি চেক করতে হবে
boolean isPalindrome = true; // প্যালিনড্রোম কিনা তা ট্র্যাক করা
int left = 0; // প্রথম অক্ষর
int right = str.length() - 1; // শেষ অক্ষর
// স্ট্রিংয়ের প্রথম এবং শেষ অক্ষর তুলনা
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
isPalindrome = false;
break;
}
left++;
right--;
}
if (isPalindrome) {
System.out.println(str + " is a Palindrome.");
} else {
System.out.println(str + " is not a Palindrome.");
}
}
}
Output:
racecar is a Palindrome.
Code Explanation:
- Two pointers (left and right): দুটি পয়েন্টার ব্যবহার করা হয়েছে—একটি শুরুতে (left) এবং আরেকটি শেষের দিকে (right)।
- Comparison: লুপের মধ্যে প্রথম এবং শেষ অক্ষর তুলনা করা হচ্ছে, এবং যদি কোনো অক্ষর মিলে না যায়, তাহলে এটি প্যালিনড্রোম নয় বলে ধরা হচ্ছে।
- Loop: পয়েন্টারগুলোকে আপডেট করে চেক করা হচ্ছে যতক্ষণ না তারা একে অপরকে অতিক্রম করে।
3. Using Recursion:
একটি রিকর্শনাল পদ্ধতি ব্যবহার করে স্ট্রিং প্যালিনড্রোম কিনা তা যাচাই করা।
public class PalindromeExample {
public static void main(String[] args) {
String str = "madam";
if (isPalindrome(str, 0, str.length() - 1)) {
System.out.println(str + " is a Palindrome.");
} else {
System.out.println(str + " is not a Palindrome.");
}
}
// Recursion method to check palindrome
public static boolean isPalindrome(String str, int left, int right) {
if (left >= right) {
return true;
}
if (str.charAt(left) != str.charAt(right)) {
return false;
}
return isPalindrome(str, left + 1, right - 1);
}
}
Output:
madam is a Palindrome.
Code Explanation:
- Recursive Function:
isPalindrome()ফাংশনটি স্ট্রিংয়ের প্রথম এবং শেষ অক্ষর তুলনা করে, যদি তারা সমান হয়, তাহলে এটি পরবর্তী চরিত্রগুলো চেক করতে রিকর্শন কল করে। - Base Case: যদি
leftএবংrightইন্ডেক্স একে অপরকে অতিক্রম করে (অথবা সমান হয়), তখন এটি সত্য মানে ফিরে আসে, যা প্যালিনড্রোম হওয়া প্রমাণ করে।
**4. Using Stack for Palindrome Check:
একটি স্ট্যাক ব্যবহার করে প্যালিনড্রোম চেক করা।
import java.util.Stack;
public class PalindromeExample {
public static void main(String[] args) {
String str = "level";
if (isPalindromeUsingStack(str)) {
System.out.println(str + " is a Palindrome.");
} else {
System.out.println(str + " is not a Palindrome.");
}
}
// Using Stack to check palindrome
public static boolean isPalindromeUsingStack(String str) {
Stack<Character> stack = new Stack<>();
// Push all characters of string onto the stack
for (int i = 0; i < str.length(); i++) {
stack.push(str.charAt(i));
}
// Compare characters from stack with the string
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) != stack.pop()) {
return false;
}
}
return true;
}
}
Output:
level is a Palindrome.
Code Explanation:
- Using Stack: একটি স্ট্যাক ব্যবহার করে, আমরা স্ট্রিংয়ের প্রতিটি চরিত্র স্ট্যাকে রাখতে পারি।
- Pop Operation: তারপর স্ট্যাক থেকে পপ করে স্ট্রিংয়ের অক্ষরের সাথে তুলনা করা হয়। যদি কোন অক্ষর মিলে না যায়, এটি প্যালিনড্রোম নয়।
- Palindrome Checking: বিভিন্ন পদ্ধতি ব্যবহার করে স্ট্রিং প্যালিনড্রোম কিনা তা যাচাই করা সম্ভব।
- Efficiency: পদ্ধতির মধ্যে পারফরম্যান্স পার্থক্য থাকতে পারে, যেমন রিকার্সিভ পদ্ধতি বা স্ট্যাক ব্যবহারে অতিরিক্ত স্পেস প্রয়োজন হতে পারে।
- Practical Application: প্যালিনড্রোম চেকিং বিভিন্ন সিচুয়েশন যেমন ডাটা ভ্যালিডেশন, অ্যালগরিদমে ব্যবহৃত হয়।
Read more