Thứ Năm, 2 tháng 5, 2024

3.7: Tìm từ dài nhất trong chuỗi

 


1. Có phần tử trùng lặp

2. Không có phần tử trùng lặp

3. Không có phần tử trùng lặp (in ra tất cả các từ thỏa mãn)

1.

public class Test { public static void main(String[] args) { String input = "chào bạn, đây là ví dụ về đổi ký tự thứ hai thành in hoa"; String[] words = input.split("\\s+"); StringBuilder result = new StringBuilder(); int max = 0; for (int i = 0; i < words.length; i++) { int x = words[i].length(); if (x > max) { max = x; result.setLength(0); // Xóa nội dung hiện tại của StringBuilder result.append(words[i]); } } System.out.println("Từ dài nhất trong chuỗi: " + result.toString()); System.out.println("Độ dài của từ dài nhất: " + max); } }

Khi chạy đoạn mã này, bạn sẽ nhận được kết quả là:

Tdài nht trong chui: thành Độ dài ca tdài nht: 7

2.


public class Main { public static String findLongestUniqueWord(String input) { String[] words = input.split("\\s+"); String longestWord = ""; int maxLength = 0; for (String word : words) { if (word.length() > maxLength && isUnique(word)) { maxLength = word.length(); longestWord = word; } } return longestWord; } public static boolean isUnique(String word) { for (int i = 0; i < word.length(); i++) { for (int j = i + 1; j < word.length(); j++) { if (word.charAt(i) == word.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { String input = "Tìm từ dài nhất trong chuỗi mà không có phần tử trùng lặp"; String longestWord = findLongestUniqueWord(input); System.out.println("Từ dài nhất không có phần tử trùng lặp trong chuỗi là: " + longestWord); } }

Kết quả sẽ là:

Tdài nht không có phn ttrùng lp trong chui là: trong

3.

Để in ra tất cả các từ có độ dài lớn nhất và không có phần tử nào được lặp lại, bạn có thể sử dụng một mảng (hoặc danh sách) để lưu trữ tất cả các từ thỏa mãn điều kiện và sau đó in ra tất cả các từ trong danh sách đó. Dưới đây là cách thực hiện điều này trong Java:

import java.util.ArrayList; import java.util.List; public class Main { public static List<String> findLongestUniqueWords(String input) { String[] words = input.split("\\s+"); List<String> longestWords = new ArrayList<>(); int maxLength = 0; for (String word : words) { if (word.length() > maxLength && isUnique(word)) { maxLength = word.length(); longestWords.clear(); longestWords.add(word); } else if (word.length() == maxLength && isUnique(word)) { longestWords.add(word); } } return longestWords; } public static boolean isUnique(String word) { for (int i = 0; i < word.length(); i++) { for (int j = i + 1; j < word.length(); j++) { if (word.charAt(i) == word.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { String input = "Tìm từ dài nhất trong chuỗi mà không có phần tử trùng lặp"; List<String> longestWords = findLongestUniqueWords(input); if (longestWords.isEmpty()) { System.out.println("Không có từ nào thỏa mãn điều kiện."); } else { System.out.println("Các từ dài nhất không có phần tử trùng lặp trong chuỗi là:"); for (String word : longestWords) { System.out.println(word); } } } }

Kết quả sẽ là:

Các từ dài nht không có phn tử trùng lp trong chui là: 
trong, chuỗi, không, trùng



Không có nhận xét nào:

Đăng nhận xét