JavaRush /Java Blog /Random-ID /Rehat kopi #110. Kami memecahkan masalah bagaimana menemu...

Rehat kopi #110. Kami memecahkan masalah bagaimana menemukan bilangan terbesar ketiga dalam sebuah array. Membalikkan string di Java

Dipublikasikan di grup Random-ID

Cara mencari bilangan terbesar ketiga dalam suatu array

Sumber: Dev.to Kami mempunyai masalah yang harus dipecahkan: Anda diberikan array bilangan bulat yang tidak diurutkan. Bagaimana cara menemukan angka terbesar ketiga dalam sebuah array? Catatan: Array berisi nilai duplikat dan nilai negatif, dan kode ini juga akan berfungsi jika panjang array bertambah N kali. Rehat kopi #110.  Kami memecahkan masalah bagaimana menemukan bilangan terbesar ketiga dalam sebuah array.  Membalikkan string di Java - 1Solusinya diberikan di Java:

Contoh 1: Array yang tidak disortir dengan nilai negatif

Masukan: [87, 99, -14, 05, 46, 54] Kode:
public class ThirdLargestNumInArray {

    public static void main(String[] args) {

        /*
         * unsorted Array with duplicate and negative values
         */
        Integer arr[] = { 87, 99, -14, 05, 46, 54 };

        /* Variable initialization */
        int largest = 0, secondLargest = 0, thirdLargest = 0;

        /* Condition to find */
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > largest) {
                /*
                 * if condition is true assign large value to second large value
                 */
                secondLargest = largest;

                /* assign new large value */
                largest = arr[i];

            } else if (arr[i] > secondLargest) {
                /*
                 * if condition is true assign second large value to third large value
                 */
                thirdLargest = secondLargest;

                /* assign new second large value */
                secondLargest = arr[i];

            } else if (arr[i] > thirdLargest) {
                /*
                 * if condition is true the third largest value will be assigned
                 */
                thirdLargest = arr[i];
            }
        }

        /* Print the values */
        System.out.println("Largest = " + largest);
        System.out.println("Second Largest = " + secondLargest);
        System.out.println("Third Largest = " + thirdLargest);

    }
}
Kesimpulan:
Terbesar = 99 Terbesar Kedua = 87 Terbesar Ketiga = 54
Penjelasan:
  1. Seperti disebutkan di atas, array diinisialisasi dengan nilai positif dan negatif.

  2. Kami menginisialisasi variabel untuk menyimpan nilai terbesar, terbesar kedua, dan terbesar ketiga. Catatan: Variabel diinisialisasi ke 0 untuk satu kasus khusus: jika elemen maksimum ketiga tidak ada dalam array, maka akan menghasilkan 0.

  3. Kami mengulangi perulangan N (panjang array) beberapa kali untuk menemukan tiga nilai terbesar.

  4. Jika syaratnya adalah menetapkan nilai terbesar ke nilai besar kedua dan menginisialisasi nilai besar baru dalam array.

    Kondisi elseif pertama adalah menetapkan nilai besar kedua ke nilai besar ketiga dan menginisialisasi nilai besar kedua yang baru dalam array.

    Kondisi elseif kedua adalah menetapkan nilai besar ketiga dalam array.

  5. Terakhir, kami mencetak variabel.

Contoh 2: Array yang tidak disortir dengan nilai negatif dan duplikat

Masukan: [77, 101, 95, 14, 05, 46, -47, 94, 00, 95, 52, 86, 36, -54, 94, 89] Kode:
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class ThirdLargestNumInSet {

    public static void main(String[] args) {

        /*
         * unsorted Array with duplicate and negative values
         */
        Integer arr[] = { 77, 101, 14, 05, 46, -47, 94, 00, 95, 52, 86, 36, -54, 94, 89 };

        /* Variable initialization */
        int largest = 0, secondLargest = 0, thirdLargest = 0;

        /*
         * using LinkedHashSet - Map to remove duplication in Array
         */
        Set<Integer> newSet = new LinkedHashSet<>();

        for (int i = 0; i < arr.length; i++) {
            newSet.add(arr[i]);
        }

        /* Condition to find */
        for (Integer i : newSet) {
            if (i > largest) {
                /*
                 * if condition is true assign large value to second large value
                 */
                secondLargest = largest;

                /* assign new large value */
                largest = i;

            } else if (i > secondLargest) {
                /*
                 * if condition is true assign second large value to third large value
                 */
                thirdLargest = secondLargest;

                /* assign new second large value */
                secondLargest = i;

            } else if (i > thirdLargest) {
                /*
                 * if condition is true the third largest value will be assigned
                 */
                thirdLargest = i;
            }
        }

        /* Print the values */
        System.out.print("Largest = " + largest);
        System.out.print("\nSecond Largest = " + secondLargest);
        System.out.print("\nThird Largest = " + thirdLargest);
    }
}
Kesimpulan:
Terbesar = 101 Terbesar Kedua = 95 Terbesar Ketiga = 94
Penjelasan: Pseudo code yang digunakan pada kedua kode tersebut sama, yang membedakan pada contoh 2 hanyalah kita menggunakan LinkedHashSet. Ini adalah koleksi Java tempat kami menyimpan objek unik yang menghasilkan penghapusan nilai duplikat dalam array.

Solusi lain:

Kita dapat menggunakan algoritma bubble sort (mengurutkan dari urutan terendah hingga tertinggi) untuk mengurutkan array dan mencari nilai terbesar dari array tersebut. Masukan: [87, 99, 14, 05, 46, 54] Kode:
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class Main {

    public static void bubblesort(Integer[] arr) {

        int n = arr.length;
        int temp;

        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }

            }
        }

    }

    public static void main(String[] args) {

        Integer[] arr = { 87, 99, 14, 05, 46, 54 };

        bubblesort(arr);

        System.out.print("array after sorting : ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

        int n = arr.length;

        int max = arr[n - 3];
        System.out.println("\n3rd largest value: " + max);
    }

}
Kesimpulan:
array setelah diurutkan : 5 14 46 54 87 99 nilai terbesar ke-3: 54

Membalikkan string di Java

Sumber: Dev.to

Program Java untuk membalikkan string menggunakan StringBuilder

Penjelasan: String adalah objek di Java yang secara internal didukung oleh serangkaian karakter. String tidak dapat diubah karena array tidak dapat diubah (tertutup untuk modifikasi). Setiap kali Anda melakukan perubahan pada suatu baris, baris baru akan dibuat. Dalam kasus kami, kami menggunakan StringBuilder yang bisa berubah. Catatan: Kita juga bisa menggunakan kelas StringBuffer . Kode:
public class ReverseStringBuilder {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Create StringBuilder(mutable) object */
        StringBuilder s1 = new StringBuilder();

        /* Using append() and reverse() in StringBuilder */
        s1.append(name);
        s1 = s1.reverse();

        /* Print the reverse */
        System.out.println(s1);

    }

}
Kesimpulan:
emordnilaP
Pengurutan:
  1. Buat objek kelas String dan inisialisasi.

  2. Buat objek kelas pembuat string .

  3. Gunakan fungsi pembuat string bawaan append() dan reverse() .

  4. Cetak objek pembuat string .

Program Java untuk membalikkan string tanpa menggunakan fungsi bawaan String reverse()

Metode 1

Penjelasan: Fungsi toCharArray() digunakan untuk mengubah string ini menjadi array karakter. Setelah ini, kita akan menggunakan perulangan for untuk menelusuri setiap karakter dalam urutan terbalik dan mendapatkan keluaran untuk setiap karakter. Kode:
public class Reverse {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Using toCharArray() function */
        char[] ch = name.toCharArray();

        /* Temp string */
        String rev = "";

        /* Iterating for loop in reverse to store */
        for (int i = ch.length - 1; i >= 0; i--) {
            /* Concatenating Strings */
            rev += ch[i];
        }

        /* Print the reverse */
        System.out.println(rev);

    }

}
Kesimpulan:
emordnilaP
Pengurutan:
  1. Buat objek kelas String dan inisialisasi.

  2. Buat array karakter dan panggil fungsi toCharArray() dengan objek String .

  3. Buat objek String untuk variabel sementara.

  4. Ulangi perulangan for secara terbalik untuk mendapatkan setiap karakter dalam urutan terbalik.

  5. Gabungkan setiap karakter ke dalam variabel Temp .

  6. Ketik Suhu .

Metode 2

Penjelasan: Dengan menggunakan perulangan for , kami mencetak string dalam urutan terbalik. Di sisi lain, metode charAt(index) mengembalikan karakter pada indeks tertentu. Karakter akan digabungkan setelah setiap iterasi untuk mengubah variabel string. Kode:
public class ReverseCharAt {

    public static void main(String[] args) {

        /* String is immutable */
        String name = "Palindrome";

        /* Temp string */
        String rev = "";

        /* Iterating for loop in reverse to store */
        for (int i = name.length() - 1; i >= 0; i--) {
            /* Concatenating Strings */
            rev = rev + name.charAt(i);
        }

        /* Print the reverse */
        System.out.println(rev);

    }

}
Kesimpulan:
emordnilaP
Pengurutan:
  1. Membuat objek kelas String dan menginisialisasinya.

  2. Buat objek String untuk variabel sementara.

  3. Mengulangi perulangan for dalam urutan terbalik untuk mendapatkan setiap karakter dalam urutan terbalik.

  4. Gabungkan setiap karakter ke dalam variabel Temp dengan memanggil fungsi charAt() .

  5. Kami mencetak Temp .

Catatan Khusus: Anda mungkin akrab dengan fungsi kebalikannya, namun tujuannya di sini adalah untuk mengeksplorasi kemampuan StringBuilder dan bagaimana Anda dapat mengoptimalkan kode Anda tanpa fungsi kebalikannya. Semoga ini bisa membantu seseorang di masa depan!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION