Java 如何删除字符串数组中的重复字符串? 公共静态字符串[]字典(字符串s){ 整数计数=0; 字符串[]ans=句子; int size=ans.length; 对于(int i=0;i

Java 如何删除字符串数组中的重复字符串? 公共静态字符串[]字典(字符串s){ 整数计数=0; 字符串[]ans=句子; int size=ans.length; 对于(int i=0;i,java,string,Java,String,我必须找到重复的字符串,并将它们从按字典顺序排序的字符串数组中删除。一种简单的方法是将它们放入一个集合中 public static String[] dictionary(String s){ int count=0; String[] ans = sentence(s); int size = ans.length; for (int i = 0; i < size - 1; i++) { for (int j = i + 1; j &l

我必须找到重复的字符串,并将它们从按字典顺序排序的字符串数组中删除。一种简单的方法是将它们放入一个集合中

public static String[] dictionary(String s){
    int count=0;
    String[] ans = sentence(s);
    int size = ans.length;
    for (int i = 0; i < size - 1; i++) {
        for (int j = i + 1; j < ans.length; j++) {
            if (ans[i].compareTo(ans[j]) > 0) {
                String temp = ans[i];
                ans[i] = ans[j];
                ans[j] = temp;
            }
        }
    }

    for (int i = 0; i < ans.length; i++) {
        ans[i] = [i].to lowerCase);
    }

    return ans;
}   

如果不想使用集合,可以这样做。而且它不需要排序数组。它的工作原理如下。注意:这会更改传入的数组

  • 获取第一个元素。如果为
    null
    则继续下一个元素
  • 将第一个元素与下一个元素进行比较
  • 如果相等,则将next替换为
    null
    并增加
    删除的
  • 继续处理元素
  • 现在创建一个原始大小为-removed的新数组。 并将所有非空值复制到新数组并返回它

    String[] result = setsHaveNoDuplicates.toArray(new String[0]);
    

    因为您知道传入数组已排序,所以可以获取当前元素并将下一个元素与当前元素进行比较。如果等于,则跳过它,否则将此元素添加到结果中,并更改为当前。像这样的

    String[] result = Arrays.stream(arr).distinct().toArray(String[]::new);
    
    
    
    公共静态字符串[]字典(字符串s){
    字符串[]ans=句子;
    if(ans==null | | ans.length==0){
    返回ans;
    }
    列表结果=新建ArrayList();
    串电流=ans[0];
    结果。添加(当前);
    for(int i=1;i
    使用集合,例如
    Set nonDuplicate=newlinkedhashset(Arrayas.asList(句子))    public static String[] removeDups(String[] arr) {
            // keep track of removed values
            int removed = 0;
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = i+1; j < arr.length; j++) {
                    if (arr[i] == null) {
                    // skip this entry and go to next
                        break;
                    }
                    if (arr[i].equals(arr[j])) {
                        // designate as removed
                        arr[j] = null;
                        removed++;
                    }
                }
            }
            // copy remaining items to new array and return.
            String[] result = new String[arr.length-removed];
            int k = 0;
            for (int i = 0; i < arr.length;  i++) {
                if (arr[i] != null) {
                    result[k++] = arr[i];
                }
            }
            return result;
        }
    
    
    String[] result = Arrays.stream(arr).distinct().toArray(String[]::new);
    
    
    
    public static String[] dictionary(String s){
            String[] ans = sentence(s);
            if (ans == null || ans.length == 0) {
                return ans;
            }
            List<String> result = new ArrayList<String>();
            String current = ans[0];
            result.add(current);
            for (int i= 1; i < ans.length; i++) {
                if (!ans[i].equals(current)) {
                    result.add(ans[i]);
                    current = ans[i];
                }
            }
            return result.toArray(new String[0]);
        }