Java 如果同一个字符多次出现,如何获取字符数组并返回true
例如:containsTwo(['a','b','c'])-->false。 containsTwo(['c','a','c'])-->trueJava 如果同一个字符多次出现,如何获取字符数组并返回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] ==
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;
}
}
要获得性能更好的解决方案,请使用哈希集。