Code đếm số lượng nhiều nhất 1 từ xuất hiện riêng biệt trong xâu không ra kết quả

đề bài là như này:
Cho một chuỗi kí tự str và một từ word . Ta có thể tách các kí tự trong str ra để tạo thành một từ. Hãy tính xem số lượng từ word riêng biệt được tạo nhiều nhất từ những kí tự trong str là bao nhiêu.

Ví dụ:

  • Với str = "loonbalxballpoon" , word = "balloon" . Đầu ra countWord(str,arr) = 2 .

bài làm của em như này không biết sai chỗ nào, mọin người giúp với:

public class Main {

    static public int countWord(String str, String word) {
        int[] b = new int[100];
        for (int i = 0; i < word.length(); i++) {
            for (int j = 0; i < str.length(); j++) {
                if (str.charAt(i) == word.charAt(i)) {
                    b[i]++;
                }
            }
        }

        int temp = 9999;
        for (int i = 0; i < word.length(); i++) {
            if (b[i] < temp) {
                temp = b[i];
            }
        }
        return temp;
    }

    public static void main(String[] args) {
        String str = "admlxqwjmabufyvjr";
        String word = "abcd";
        int i = countWord(str, word);
        System.out.println("" + i);
    }

}

Mình run thì nó không xuất hiện gì hết, không bị lỗi hay gì luôn.

Chào bạn,
Bạn cho mình hỏi là nếu str = aaaword = aa thì code bạn và kq có giống nhau ko?

2 Likes

mình chạy thì màn hình không hiện gì hết luôn bạn ơi.

Đề giống trên codelearn vậy?

Thấy cách bạn khai báo không ổn lắm.
new int[100]temp = 9999???

Thắc mắc của mình là chỉ cần đủ số lượng từ hay phải đúng thứ tự trước-sau nữa?

2 Likes

Ohh vậy thì mình chịu. Mình ko biết java, mình chỉ góp ý thuật toán giúp bạn thôi :v

1 Like

Bạn bị lặp vô hạn ở chỗ 2 vòng lặp lồng nhau và điều kiện so sánh cũng chả đúng.

2 Likes

đúng là đề trên codelearn đấy bạn. Tại mình thấy người ta làm như này, muốn chuển qua java thử mà chẳng biết bị gì :frowning:

int countWord(string str, string word)
{
     int B[100] = { 0 };
    for (int i = 0; i < word.length(); i++)
    {
        for (int j = 0; j <str.length(); j++)
        {
            if (str[j] == word[i])
            {
                B[i]++;
            }
        }
    }
    int min = 9999;
    for (int i = 0; i < word.length(); i++)
    {
        if (B[i] < min)
        {
            min = B[i];
        }
    }
    return min;
}

Tại sao lại bị vô hạn vậy. Bạn giải thích giúp mìn với.

Xem kĩ lại ij.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?