Skip to content

13. String Operations

স্ট্রিং ম্যানিপুলেশন ইন্টারভিউ এবং প্রবলেম সলভিংয়ে খুবই গুরুত্বপূর্ণ। সব উদাহরণ Logic এবং Complexity Analysis সহ দেওয়া হলো।


1. স্ট্রিং রিভার্স (String Reversal)

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. স্ট্রিংটিকে ক্যারেক্টার অ্যারেতে রূপান্তর করুন।
  2. টু-পয়েন্টার অ্যাপ্লোচ ব্যবহার করে শুরু এবং শেষের ক্যারেক্টার অদলবদল (Swap) করুন।
  3. সবশেষে অ্যারেটিকে পুনরায় স্ট্রিংয়ে রূপান্তর করুন।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)

  • Time Complexity: O(n)
  • Space Complexity: O(n) - নতুন স্ট্রিং বা অ্যালরে তৈরি করার জন্য।

Java Implementation

java
public String reverse(String s) {
    return new StringBuilder(s).reverse().toString();
}

2. প্যালিনড্রোম চেক (Palindrome Check)

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. দুটি পয়েন্টার নিন: i (শুরুতে) এবং j (শেষে)।
  2. যদি str[i] এবং str[j] এক না হয়, তবে এটি প্যালিনড্রোম নয়।
  3. i এবং j একে অপরের দিকে অগ্রসর হতে থাকবে যতক্ষণ তারা মাঝখানে না পৌঁছায়।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)

  • Time Complexity: O(n)
  • Space Complexity: O(1)

Python Implementation

python
def is_palindrome(s):
    return s == s[::-1]

3. অ্যানাগ্রাম চেক (Anagram Check)

দুটি স্ট্রিং অ্যানাগ্রাম কিনা (যেমন: "listen" এবং "silent")।

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. দুটি স্ট্রিংয়ের লেন্থ তুলনা করুন (ভিন্ন হলে সরাসরি ফলস)।
  2. দুটি স্ট্রিংকেই সর্ট (Sort) করুন।
  3. যদি সর্টেড স্ট্রিং দুটি হুবহু মিলে যায়, তবে তারা অ্যানাগ্রাম।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)

  • Time Complexity: O(n log n) - সর্টিং করার জন্য।
  • Optimization: ফ্রিকোয়েন্সি অ্যারে (Frequency Array) ব্যবহার করলে O(n) এ করা সম্ভব।

Java Implementation

java
public boolean isAnagram(String s1, String s2) {
    if (s1.length() != s2.length()) return false;
    char[] c1 = s1.toCharArray();
    char[] c2 = s2.toCharArray();
    java.util.Arrays.sort(c1);
    java.util.Arrays.sort(c2);
    return java.util.Arrays.equals(c1, c2);
}

4. ক্যারেক্টার ফ্রিকোয়েন্সি (Frequency Count)

🛠 কর্মপদ্ধতি (Step-by-Step Logic)

  1. একটি কাউন্টার অ্যারে বা হ্যাশ ম্যাপ নিন।
  2. স্ট্রিংয়ের প্রতিটি ক্যারেক্টার ভিজিট করুন এবং তার কাউন্ট ১ বাড়িয়ে দিন।

📊 কমপ্লেক্সিটি অ্যানালাইসিস (Complexity Analysis)

  • Time Complexity: O(n)
  • Space Complexity: O(1) - যদি ক্যারেক্টার সেট ফিক্সড থাকে (যেমন: ছোট হাতের ২৬টি বর্ণ)।

IMPORTANT

স্ট্রিং ইমিউটেবল (Immutable) হওয়ার কারণে অনেক ল্যাঙ্গুয়েজে ডিরেক্ট চেঞ্জ করা যায় না, তাই StringBuilder (Java) বা লিস্ট (Python) ব্যবহা করা কার্যকর।

Released under the MIT License.