gpt4 book ai didi

java - 比较字符串的字符是否存在于字符数组中

转载 作者:行者123 更新时间:2023-11-30 05:39:35 24 4
gpt4 key购买 nike

我希望用户输入一个字符串,然后我想检查该字符串中的每个字符是否存在于我创建的字符数组中。即使顺序不正确。

我的方法是初始化字符数组,然后通过使用扫描仪从用户那里输入字符串。

public static char[]aa={'A','C','D','E','F','G','H','I','K', 'L'、'M'、'N'、'P'、'Q'、'R'、'S'、'T'、'V'、'W'、'Y'、'U'、'O ','B','J','Z','X'};

我创建了一个函数

private static void isValidSequence(String sequence, char[] k) {
outter :for (int j = 0; j < sequence.length(); j++) {
for (int i = 0; i < k.length; i++) {
if(sequence.charAt(j) == k[i]){
break;
} else {
System.out.println("invalid");
break outter;
}
}
}
}

发生的情况是,例如,如果字符串的第一个字母与数组的第一个输入不匹配,它会给我一个“无效”输入。我该如何解决这个问题?并使其在给出无效输出之前迭代整个字符数组。

最佳答案

一种方法是对数组进行排序,然后使用 Binary Search Algorithm (BSA) :

// sort the array once
Arrays.sort(aa);

// iterate over the input string
for(int i = 0, length = sequence.length(); i < length; i++) {
// the java implementation of the BSA returns negative numbers for not found elements
if(Arrays.binarySearch(aa, sequence.charAt(i)) < 0) {
// char was not found, break loop
return;
}
}

注意:如果数组未排序/无法排序,则 BSA 毫无用处,并且会产生未定义的结果。

注 2:BSA (O(log n)) 比简单迭代 (O(n)) 更快

关于java - 比较字符串的字符是否存在于字符数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com