Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果同一个字符多次出现,如何获取字符数组并返回true_Java - Fatal编程技术网

Java 如果同一个字符多次出现,如何获取字符数组并返回true

Java 如果同一个字符多次出现,如何获取字符数组并返回true,java,Java,例如:containsTwo(['a','b','c'])-->false。 containsTwo(['c','a','c'])-->true public static boolean containsTwo(char[] arr) { int pos = 0; for (int i = 0; i < arr.length; i++) { for (int i2 = 1; i2 < arr.length -1;i2++) { if (arr[pos] ==

例如:containsTwo(['a','b','c'])-->false。 containsTwo(['c','a','c'])-->true

public static boolean containsTwo(char[] arr) {
  int pos = 0;
  for (int i = 0; i < arr.length; i++) {
    for (int i2 = 1; i2 < arr.length -1;i2++) {
    if (arr[pos] == arr[i]) {
    return true;
    }
    pos++;
  } return false;
}
公共静态布尔containsTwo(char[]arr){
int pos=0;
对于(int i=0;i

我无法确定如何遍历数组以检查arr[0]是否与arr[2]或arr[3]相同

您在右轨迹上。您从左向右看。如果当前位置右侧的任何字符与当前位置匹配,则返回
true
。如果检查所有字符
则返回false
。例如

public static boolean containsTwo(char[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[i] == arr[j]) {
                return true;
            }
         }
     }
     return false;
}
公共静态布尔containsTwo(char[]arr){
对于(int i=0;i>P>而不是使用双循环,考虑使用SET.

public static boolean containsTwo(char[] arr) {
    Set<Character> set = new HashSet<>();
    for (char a : arr) {
        if (set.add(a) == false) {
            return true;
        }
    }
    return false;
}
公共静态布尔containsTwo(char[]arr){
Set=newhashset();
用于(字符a:arr){
if(set.add(a)=false){
返回true;
}
}
返回false;
}

如果元素数量庞大,将每个元素与char[]的所有其他元素进行比较将变得更加复杂。
如果您的请求仅根据char[]中存在的任何重复字符返回True或False,请尝试将char[]元素添加到集合中,因为集合将只接受唯一值;当您添加集合中已存在的元素时,它将返回False,您的要求将得到满足。
请使用以下完整代码。

import java.util.HashSet;
import java.util.Set;

public class ArrayToSet {

    public static void main(String[] args) {
        ArrayToSet arraySet = new ArrayToSet();
        char[] chars = { 'a', 'b', 'c' };
        System.out.println(arraySet.containsTwo(chars));
    }

    public static boolean containsTwo(char[] arr) {
        Set<Character> charSet = new HashSet<>();
        for (char ch : arr) {
            if (charSet.add(ch) == false) {
                return true;
            }
        }
        return false;
    }
} 
import java.util.HashSet;
导入java.util.Set;
公共类数组集{
公共静态void main(字符串[]args){
ArrayToSet arraySet=新的ArrayToSet();
char[]chars={'a','b','c'};
System.out.println(arraySet.containsTwo(chars));
}
公共静态布尔值containsTwo(char[]arr){
Set charSet=new HashSet();
用于(字符通道:arr){
if(charSet.add(ch)==false){
返回true;
}
}
返回false;
}
} 

要获得性能更好的解决方案,请使用
哈希集。