Rumah > Java > javaTutorial > Bagaimana untuk mendapatkan aksara yang berbeza dan nombor mereka dalam rentetan di java

Bagaimana untuk mendapatkan aksara yang berbeza dan nombor mereka dalam rentetan di java

王林
Lepaskan: 2023-04-20 12:04:06
ke hadapan
1877 orang telah melayarinya

Cara mendapatkan aksara yang berbeza dan nombornya dalam rentetan

Soalan ini boleh dipecahkan kepada dua langkah Langkah pertama ialah mencari aksara yang berbeza untuk mencari aksara yang berbeza Langkah 1, hitung nombor mereka. Nampak agak mengarut, kan?

public class DistinctCharsCount {     public static void main(String[] args) {         printDistinctCharsWithCount("itwanger");         printDistinctCharsWithCount("chenmowanger");     }      private static void printDistinctCharsWithCount(String input) {         Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();          for (char c : input.toCharArray()) {             Integer oldValue = charsWithCountMap.get(c);              int newValue = (oldValue == null) ? 1 :                     Integer.sum(oldValue, 1);              charsWithCountMap.put(c, newValue);         }         System.out.println(charsWithCountMap);     } }
Salin selepas log masuk

Hasil keluaran program ialah:

{i=1, t=1, w=1, a=1, n=1, g=1, e=1, r=1} {c=1, h=1, e=2, n=2, m=1, o=1, w=1, a=1, g=1, r=1}
Salin selepas log masuk

Biar saya bercakap tentang idea saya:

1) Isytihar LinkedHashMap, anda juga boleh menggunakan HashMap , tetapi yang pertama boleh Mengekalkan susunan rentetan selepas membelah, dan hasilnya akan kelihatan lebih jelas sepintas lalu.

Mengapa menggunakan Map? Kerana kunci Map tidak dibenarkan untuk diulang, dan ia hanya boleh menambah bilangan aksara berulang.

2) Pisahkan rentetan kepada aksara dan lintasan.

3) Jika kekuncinya batal, ini bermakna nombornya ialah +1, sebaliknya, +1 ditambahkan pada nilai sebelumnya, dan kemudian dimasukkan semula ke dalam Peta, sekali gus menimpa bilangan aksara sebelumnya. .

Pemikiran itu sangat jelas, bukan?

Nah, selepas JDK 8, Map menambah kaedah merge(), yang memberikan nilai kepada berbilang kunci sekaligus:

private static void printDistinctCharsWithCountMerge(String input) {     Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();      for (char c : input.toCharArray()) {         charsWithCountMap.merge(c, 1, Integer::sum);     }     System.out.println(charsWithCountMap); }
Salin selepas log masuk

Bukankah ia sangat berkuasa? satu baris kod Selesai. Parameter pertama ialah kunci, parameter kedua ialah nilai, dan parameter ketiga ialah BiFunction, yang bermaksud jika kunci sudah wujud, kira semula nilai baharu berdasarkan BiFunction.

Jika aksara muncul buat kali pertama, tetapkan nilai 1 jika tidak, jumlahkan nilai sebelumnya kepada 1.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan aksara yang berbeza dan nombor mereka dalam rentetan di java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan