Nội dung chính
Bài tập Java - Đếm số từ trong một chuỗi
Đề bài: Viết chương trình đếm số từ trong một chuỗi trong Java. Mỗi từ cách nhau bởi một khoảng trắng (tab, space, ...) Ví dụ ” hoc java co ban den nang cao ” có 7 từ.
Lời giải
Thuật toán:
- Nếu chuỗi đã cho input = null thì trả về -1. Kết thúc tại đây.
- Ngược lại, duyệt từ phần tử đầu tiên đến phần tử cuối cùng của chuỗi.
- Nếu ký tự hiện tại là ký tự chữ (ký tự khác space và tab và xuống dòng) thì ta tìm được một từ. Và đánh dấu từ đó đã được đếm (notCounted = false;). Đến khi gặp ký tự space hoặc tab hoặc xuống dòng thì đánh dấu từ đó đã đếm xong (notCounted = true;) để đếm từ tiếp theo.
Các bạn xin hãy lưu ý: một bài toán có hàng trăm nghìn cách giải, ngoài cách này ra các bạn có thể tự nghĩ cho mình những cách giải khác hoặc tìm trên google!
File: StringExample1.java
package vn.kienthuclaptrinh.baitap; /** * Chương trình đếm số từ của một chuỗi trong java * * @author kienthuclaptrinh.net */ public class StringExample1 { 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 test"; System.out.print("Số từ của chuỗi đã cho là: " + countWords(str)); } /** * Đế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 int countWords(String input) { if (input == null) { return -1; } int count = 0; int size = input.length(); boolean notCounted = true; for (int i = 0; i < size; i++) { if (input.charAt(i) != SPACE && input.charAt(i) != TAB && input.charAt(i) != BREAK_LINE) { if(notCounted) { count++; notCounted = false; } } else { notCounted = true; } } return count; } }
Kết quả:
Số từ của chuỗi đã cho là: 8