Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में सरणी में दूसरी सबसे अधिक दोहराई जाने वाली स्ट्रिंग कैसे ढूंढें?

Android में दूसरी सबसे अधिक दोहराई जाने वाली स्ट्रिंग ढूंढना

यह उदाहरण दर्शाता है कि Android में स्ट्रिंग सरणी में दूसरी सबसे अधिक बार आने वाली स्ट्रिंग कैसे ढूंढी जाती है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट XML में कोड जोड़ें

res/layout/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:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

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

</LinearLayout>

उपरोक्त कोड में, हमने सरणी में दूसरी सबसे अधिक दोहराई जाने वाली स्ट्रिंग दिखाने के लिए TextView लिया है।

चरण 3: MainActivity.java में कोड जोड़ें

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class MainActivity extends AppCompatActivity {
    TextView textView;
    String[] strArray = {"aaa", "aaa", "bbb", "ccc", "bbb"};

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

        // 1. फ्रीक्वेंसी मैप बनाएं
        HashMap<String, Integer> frequencyMap = new HashMap<>();
        for (String str : strArray) {
            frequencyMap.put(str, frequencyMap.getOrDefault(str, 0) + 1);
        }

        // 2. फ्रीक्वेंसी के अनुसार सॉर्ट करें
        List<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(frequencyMap.entrySet());
        sortedEntries.sort((e1, e2) -> e2.getValue().compareTo(e1.getValue()));

        // 3. दूसरी सबसे अधिक फ्रीक्वेंसी वाली स्ट्रिंग प्राप्त करें
        String secondMostFrequent = "";
        if (sortedEntries.size() >= 2) {
            secondMostFrequent = sortedEntries.get(1).getKey();
        } else if (sortedEntries.size() == 1) {
            secondMostFrequent = sortedEntries.get(0).getKey();
        }

        TextView textView = findViewById(R.id.text);
        textView.setText("दूसरी सबसे अधिक: " + secondMostFrequent);
        
        // डीबग के लिए सभी फ्रीक्वेंसी दिखाएं
        Log.d("Frequency", frequencyMap.toString());
    }
}

एप्लिकेशन चलाएं

अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और परिणाम देखें।

Android में सरणी में दूसरी सबसे अधिक दोहराई जाने वाली स्ट्रिंग कैसे ढूंढें?

परिणाम: सरणी {"aaa", "aaa", "bbb", "ccc", "bbb"} में:

  • "aaa" - 2 बार
  • "bbb" - 2 बार
  • "ccc" - 1 बार

दोनों "aaa" और "bbb" 2 बार आते हैं। दूसरी सबसे अधिक "bbb" या "aaa" हो सकती है (टाई-ब्रेकिंग पर निर्भर)।

बेहतर दृष्टिकोण - टाई हैंडलिंग के साथ

public String findSecondMostFrequent(String[] array) {
    // 1. फ्रीक्वेंसी गिनें
    Map<String, Integer> freqMap = new HashMap<>();
    for (String s : array) {
        freqMap.put(s, freqMap.getOrDefault(s, 0) + 1);
    }

    // 2. फ्रीक्वेंसी के अनुसार ग्रुप करें
    Map<Integer, List<String>> freqGroups = new TreeMap<>(Collections.reverseOrder());
    for (Map.Entry<String, Integer> entry : freqMap.entrySet()) {
        freqGroups.computeIfAbsent(entry.getValue(), k -> new ArrayList<>()).add(entry.getKey());
    }

    // 3. दूसरी सबसे बड़ी फ्रीक्वेंसी ढूंढें
    List<Integer> frequencies = new ArrayList<>(freqGroups.keySet());
    if (frequencies.size() < 2) {
        return frequencies.isEmpty() ? null : freqGroups.get(frequencies.get(0)).get(0);
    }

    int secondHighestFreq = frequencies.get(1);
    return freqGroups.get(secondHighestFreq).get(0); // पहली स्ट्रिंग लौटाएं
}

Java 8 Stream API के साथ

String secondMost = Arrays.stream(strArray)
    .collect(Collectors.groupingBy(s -> s, Collectors.counting()))
    .entrySet().stream()
    .sorted(Map.Entry.comparingByValue().reversed())
    .skip(1)
    .findFirst()
    .map(Map.Entry::getKey)
    .orElse("Not found");

मुख्य बिंदु

  • HashMap का उपयोग करके फ्रीक्वेंसी गिनें - O(n) समय
  • फ्रीक्वेंसी के अनुसार सॉर्ट करें - O(m log m) जहां m यूनिक स्ट्रिंग्स की संख्या
  • टाई (बराबर फ्रीक्वेंसी) को हैंडल करें
  • एज केस: खाली सरणी, सभी यूनिक, सभी समान
  • Java 8 Streams कोड को संक्षिप्त बनाते हैं
  1. एंड्रॉइड में एड्रेस से लैटीट्यूड और लॉन्गिट्यूड कैसे प्राप्त करें? (जियोकोडिंग) एंड्रॉइड में एड्रेस से लैटीट्यूड और लॉन्गिट्यूड कैसे प्राप्त करें? (जियोकोडिंग)

    एंड्रॉइड में Geocoder का उपयोग करके एड्रेस से लैटीट्यूड/लॉन्गिट्यूड प्राप्त करना Geocoding = एड्रेस (स्ट्रिंग) → लैटीट्यूड/लॉन्गिट्यूड (निर्देशांक)। एंड्रॉइड में android.location.Geocoder क्लास यह काम करती है। इसके लिए **इंटरनेट** और **लोकेशन परमिशन** चाहिए। चरण 1: नया प्रोजेक्ट बनाएं Android Studi

  1. एंड्रॉइड में लाइन कैसे ड्रा करें? (Canvas/Paint) एंड्रॉइड में लाइन कैसे ड्रा करें? (Canvas/Paint)

    एंड्रॉइड में Canvas और Paint से लाइन (और शेप्स) ड्रा करना एंड्रॉइड में कस्टम ड्राइंग के लिए Canvas (ड्राइंग सतह) और Paint (स्टाइल: रंग, चौड़ाई, स्ट्रोक/फिल) उपयोग करते हैं। दो मुख्य दृष्टिकोण हैं: कस्टम View (onDraw() ओवरराइड) — **सिफारिश किया गया**, पुन: उपयोग योग्य, प्रदर्शन अच्छा। Bitmap पर ड्रा

  1. एंड्रॉइड में इमेज को Base64 स्ट्रिंग में कैसे बदलें? एंड्रॉइड में इमेज को Base64 स्ट्रिंग में कैसे बदलें?

    Bitmap को Base64 एन्कोडेड स्ट्रिंग में कनवर्ट करें यह उदाहरण दर्शाता है कि ड्रॉएबल रिसोर्स से Bitmap लोड करके Base64 स्ट्रिंग में कैसे बदलें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: साधारण लेआउट res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-