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

Android-এ স্ট্রিং অ্যারে থেকে কমন ক্যারেক্টার সরানোর পদ্ধতি

Android-এ স্ট্রিং অ্যারে থেকে কমন (Common) ক্যারেক্টার সরিয়ে ফেলা

এই টিউটোরিয়ালে আমরা দেখব কিভাবে একটি স্ট্রিং অ্যারেতে থাকা সব স্ট্রিংয়ের কমন ক্যারেক্টারগুলো চিহ্নিত করে সেগুলো সরিয়ে ফেলা যায়। মূল লজিক: যেসব ক্যারেক্টার একাধিকবার আবির্ভূত হয়েছে (সর্বোচ্চ ফ্রিকোয়েন্সি), সেগুলো "কমন" ধরে রিমুভ করা হয়।

প্রয়োজনীয় ধাপসমূহ

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio → File → New Project → প্রয়োজনীয় ডিটেইলস পূরণ করুন।

ধাপ ২: লেআউট ফাইল (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="30sp"
        android:gravity="center" />

</LinearLayout>

ধাপ ৩: MainActivity.java (বাগ-ফিক্সড ও সংশোধিত সংস্করণ)

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.util.*;

public class MainActivity extends AppCompatActivity {

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String[] strArray = {"aaa", "aaa", "bbb", "ccc", "bbb"};

        // ১. সব স্ট্রিংয়ের ক্যারেক্টার ফ্রিকোয়েন্সি কাউন্ট
        Map<Character, Integer> charFreq = new HashMap<>();
        for (String s : strArray) {
            for (char c : s.toCharArray()) {
                charFreq.put(c, charFreq.getOrDefault(c, 0) + 1);
            }
        }

        // ২. সর্বোচ্চ ফ্রিকোয়েন্সি বের করুন
        int maxFreq = Collections.max(charFreq.values());

        // ৩. কমন ক্যারেক্টারগুলো (যাদের ফ্রিকোয়েন্সি = maxFreq) চিহ্নিত করুন
        Set<Character> commonChars = new HashSet<>();
        for (Map.Entry<Character, Integer> entry : charFreq.entrySet()) {
            if (entry.getValue() == maxFreq) {
                commonChars.add(entry.getKey());
            }
        }

        // ৪. প্রতিটি স্ট্রিং থেকে কমন ক্যারেক্টার সরিয়ে ফেলুন
        List<String> resultList = new ArrayList<>();
        for (String s : strArray) {
            StringBuilder sb = new StringBuilder();
            for (char c : s.toCharArray()) {
                if (!commonChars.contains(c)) {
                    sb.append(c);
                }
            }
            resultList.add(sb.toString());
        }

        TextView textView = findViewById(R.id.text);
        textView.setText("কমন ক্যারেক্টার: " + commonChars + "\nফলাফল: " + resultList);
    }
}

মূল কোডের সমস্যা ও সমাধান:

  • মূল কোডে HashMapString, Integer> সিনট্যাক্স এরর ছিল।
  • লজিকুল ত্রুটি: স্ট্রিং ফ্রিকোয়েন্সি বের করে ক্যারেক্টার লেভেলে কাজ করা হয়নি।
  • এখানে সরাসরি ক্যারেক্টার ফ্রিকোয়েন্সি কাউন্ট করে কমন ক্যারেক্টার বের করা হয়েছে।

ফলাফল

ইনপুট: ["aaa", "aaa", "bbb", "ccc", "bbb"]

ক্যারেক্টার ফ্রিকোয়েন্সি: a=6, b=6, c=3

সর্বোচ্চ ফ্রিকোয়েন্সি: ৬ → কমন ক্যারেক্টার: {a, b}

প্রতিটি স্ট্রিং থেকে 'a' এবং 'b' সরিয়ে ফেলা:

  • "aaa" → "" (খালি)
  • "bbb" → "" (খালি)
  • "ccc" → "ccc" (অপরিবর্তিত)

ফাইনাল আউটপুট: ["", "", "ccc", "ccc", ""]

Android-এ স্ট্রিং অ্যারে থেকে কমন ক্যারেক্টার সরানোর পদ্ধতি

সারসংক্ষেপ

ক্যারেক্টার লেভেলে ফ্রিকোয়েন্সি কাউন্ট → সর্বোচ্চ ফ্রিকোয়েন্সি বের করা → সেই ক্যারেক্টারগুলো সব স্ট্রিং থেকে রিমুভ করা। এটি O(N*L) টাইম কমপ্লেক্সিটিতে কাজ করে (N = স্ট্রিং সংখ্যা, L = গড় দৈর্ঘ্য)।

  1. অ্যান্ড্রয়েডে ArrayList-এ থেকে সব এলিমেন্ট মুছে ListView আপডেট করার পদ্ধতি

  2. Android-এ ListView-এর জন্য LinkedList-এন সব এলিমেন্ট মুছে ফেলার পদ্ধতি

  3. Android-এ ArrayBlockingQueue- থেকে এলিমেন্ট রিমুভ করার পদ্ধতি

  4. অ্যান্ড্রয়েড থেকে ম্যালওয়্যার সরানোর উপায়