কম্পিউটার টিউটোরিয়াল

C-এ প্যালিনড্রোম স্ট্রিং চেক করার প্রোগ্রাম

প্যালিনড্রোম হল এমন শব্দ, সংখ্যা বা সিকোয়েন্স যা উল্টে পড়লেও একই থাকে। যেমন: madam, racecar, 10801।

একটি স্ট্রিং প্যালিনড্রোম কিনা চেক করতে হলে স্ট্রিংটি উল্টে দিয়ে মূল স্ট্রিংয়ের সাথে তুলনা করতে হয়। অর্থাৎ, প্রথম ও শেষ অক্ষর, দ্বিতীয় ও শেষ থেকে দ্বিতীয় অক্ষর — এভাবে সব জোড়া মিলতে হবে।

ইনপুট-আউটপুট উদাহরণ

  • ইনপুট: naman → আউটপুট: string is a palindrome
  • ইনপুট: tutorials point → আউটপুট: string is not a palindrome

অ্যালগরিদম

  1. স্ট্রিংয়ের দৈর্ঘ্য বের করুন (strlen)।
  2. লুপ চালান i = 0 থেকে length - 1 পর্যন্ত।
  3. প্রতিটি i এর জন্য string[i] এবং string[length - i - 1] তুলনা করুন।
  4. কোনো জোড়া মেলে না হলে flag = 1 সেট করে ব্রেক করুন।
  5. লুপ শেষে flag চেক করুন: ০ হলে প্যালিনড্রোম, ১ হলে নয়।

C প্রোগ্রাম

#include <stdio.h>
#include <string.h>

int main() {
    char string1[] = "naman";
    int i, length;
    int flag = 0;
    length = strlen(string1);
    for (i = 0; i < length; i++) {
        if (string1[i] != string1[length - i - 1]) {
            flag = 1;
            break;
        }
    }
    if (flag == 1) {
        printf("string is not a palindrome");
    } else {
        printf("string is a palindrome");
    }
    return 0;
}

আউটপুট

string is a palindrome

মূল পয়েন্ট

  • প্রোগ্রামটি কেস-সেনসিটিভ — Naman এবং naman আলাদা মনে করবে।
  • স্পেস বা পাঙ্কচুয়েশন থাকলে সেটিও মিলান হবে (যেমন "naman " প্যালিনড্রোম নয়)।
  • কেস-ইনসেনসিটিভ চেক করতে tolower() বা toupper() ব্যবহার করুন।
  • টাইম কমপ্লেক্সিটি: O(n), স্পেস: O(1)।

উন্নত সংস্করণ (কেস-ইনসেনসিটিভ)

#include <ctype.h>
// লুপের ভিতরে:
if (tolower(string1[i]) != tolower(string1[length - i - 1])) { ... }
  1. দেওয়া স্ট্রিংটি ভয়েল প্যালিনড্রোম কিনা চেক করার পাইথন প্রোগ্রাম

  2. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম

  3. পাইথনে স্ট্রিং প্যাংগ্রাম (Pangram) কিনা চেক করা

  4. পাইথনে সাবস্ট্রিং স্ট্রিংয়ে উপস্থিত কিনা যাচাই করার প্রোগ্রাম