VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java String

Bài Tập Java

Danh sách bài tập java

Lời Giải Bài Tập Java Cơ Bản 1

Giải phương trình bậc 2 Tính giai thừa Chuyển đổi hệ cơ số Dãy so Fibonacci Tìm UCLN và BCNN Liệt kê tất cả số nguyên tố nhỏ hơn n Liệt kê n số nguyên tố đầu tiên Liệt kê tất cả số nguyên tố có 5 chữ số Phân tích số nguyên Tính tổng của các chữ số của một số nguyên Số thuận nghịch Fibonacci nhỏ hơn n là nguyên tố Viết chương trình java tính hàm SLOPE trong excel

Lời Giải Bài Tập Java Cơ Bản 2

Đếm số từ của một sâu ký tự Số lần xuất hiện các từ trong một sâu Sâu s1 chứa sâu s2?

Lời Giải Bài Tập Mảng (Array) Trong Java

Liệt kê các phần tử xuất hiện trong mảng đúng 1 lần Liệt kê các phần tử xuất hiện trong mảng đúng 2 lần Liệt kê số lần xuất hiện của các phần tử trong một mảng Sắp xếp mảng theo thứ tự tăng dần Sắp xếp mảng theo thứ tự giảm dần Chèn phần tử vào mảng trong java Trộn 2 mảng trong java

Lời Giải Bài Tập Java Nâng Cao

Lời giải bài tập QLSV Bài tập quản lý sinh viên trong java - Tạo giao diện bằng Swing
Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Bài tập Java - Liệt kê số lần xuất hiện của các từ trong một chuỗi


Danh sách bài tập java
Tính giai thừa trong java

Nội dung chính

  • Bài tập Java - Liệt kê số lần xuất hiện của các từ trong một chuỗi
  • Lời giải

Bài tập Java - Liệt kê số lần xuất hiện của các từ trong một chuỗi

Đề bài: Viết chương trình java liệt kê số lần xuất hiện của các từ trong một chuỗi.



Lời giải

Trong bài này chúng tôi sử dụng StringBuilder thay vì String trong java để build một từ và sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong chuỗi đã cho.

File: StringExample2.java


package vn.viettuts.baitap;

import java.util.Map;
import java.util.TreeMap;

/**
 * Chương trình liệt kê số lần xuất hiện của các từ của một chuỗi 
 * trong java
 * 
 * @author viettuts.vn
 */
public class StringExample2 {
    public static final char SPACE = ' ';
    public static final char TAB = '\t';
    public static final char BREAK_LINE = '\n';
    
    /**
     * main
     * 
     * @param args
     */
    public static void main(String[] args) {
        String str = "hoc java     co ban den nang cao"
                + "      \n hoc c++ co ban den nang cao.";
        System.out.println("---------------------------------");
        System.out.println(str);
        System.out.println("---------------------------------");
        // liệt kê sô lần xuất hiện của các từ trong chuỗi trên
        System.out.println("Liệt kê số lần xuất hiện của các từ: ");
        Map<String, Integer> wordMap = countWords(str);
        for (String key : wordMap.keySet()) {
            System.out.print(key + " " + wordMap.get(key) + "\n");
        }
    }

    /**
     * Đếm số từ của một chuỗi, 
     * giả sử các từ được ngăn cách nhau bởi một hoặc nhiều 
     * dấu 'space', tab '\t' và xuống dòng '\n'
     * 
     * @param input - chuỗi ký tự
     * @return số từ của chuỗi ký tự input
     */
    public static Map<String, Integer> countWords(String input) {
        // khởi tạo wordMap
        Map<String, Integer> wordMap = new TreeMap<String, Integer>();
        if (input == null) {
            return wordMap;
        }
        int size = input.length();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < size; i++) {
            if (input.charAt(i) != SPACE && input.charAt(i) != TAB 
                    && input.charAt(i) != BREAK_LINE) {
                // build một từ
                sb.append(input.charAt(i));
            } else {
                // thêm từ vào wordMap
                addWord(wordMap, sb);
                sb = new StringBuilder();
            }
        }
        // thêm từ cuối cùng tìm được vào wordMap
        addWord(wordMap, sb);
        return wordMap;
    }
    
    /**
     * Thêm từ vào wordMap
     * 
     * @param wordMap: map chứa các từ và số lần xuất hiện
     * @param sb: từ cần thêm vào wordMap
     */
    public static void addWord(Map<String, Integer> wordMap, StringBuilder sb) {
        String word = sb.toString();
        if (word.length() == 0) {
            return;
        }
        if (wordMap.containsKey(word)) {
            int count = wordMap.get(word) + 1;
            wordMap.put(word, count);
        } else {
            wordMap.put(word, 1);
        }
    }
}

Kết quả:

---------------------------------
hoc java     co ban den nang cao      
 hoc c++ co ban den nang cao.
---------------------------------
Liệt kê số lần xuất hiện của các từ: 
ban 2
c++ 1
cao 1
cao. 1
co 2
den 2
hoc 2
java 1
nang 2

Lưu ý: trong một số trường hợp phải thao tác nhiều với một chuỗi bạn nên sử dụng StringBuilder thay vì sử dụng String nhé.

Một bài toán có trăm nghìn cách giải. Hãy giải bài toán đó theo cách của bạn!


Danh sách bài tập java
Tính giai thừa trong java

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Java Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaBài tập quản lý sinh viên trong JavaHashSet trong java

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml