Java 搜索字符数组以查看字符是否匹配
我有两个字符数组,以两个字符串作为输入。如果任意一侧的字符具有匹配的字符,例如,在将字符数组转换为字符串char A和char B后,它们都至少具有一个H或R,那么它将返回true。如果不是,则返回falseJava 搜索字符数组以查看字符是否匹配,java,Java,我有两个字符数组,以两个字符串作为输入。如果任意一侧的字符具有匹配的字符,例如,在将字符数组转换为字符串char A和char B后,它们都至少具有一个H或R,那么它将返回true。如果不是,则返回false >char[] A = foo(A).toCharArray(); > >char[] B = foo(B).toCharArray(); > >System.out.println("String "+A+": "+Arrays.toString(A));
>char[] A = foo(A).toCharArray();
>
>char[] B = foo(B).toCharArray();
>
>System.out.println("String "+A+": "+Arrays.toString(A));
>
>System.out.println("String "+B+": "+Arrays.toString(B));
>String A: [H, , R, ]
>
>String B: [R, , R, R]
>>This will return true
>String A: [ , H, , R]
>
>String B: [H, H, , H]
>>This will return true
>String A: [H, , H, ]
>
>String B: [R, , R, ]
>>This will return false
我不知道如何制定这样的规则?您可以使用For在矩阵中迭代,并验证当前项是“R”还是“H”
boolean returnedValue=false;
for(int i=0;i 返回值
您可以在这里使用java.util.Set
,它将在一次迭代中给出结果。使用java.util.TreeSet
进一步减少执行时间,因为它消除了重复项
public static void main(String[] args) {
char[] A = "HR".toCharArray();
char[] B = "RRR".toCharArray();
Set<Character> set = new TreeSet<>();
boolean flag = false;
for(char c : A) {
set.add(c);
}
for(char c : B) {
if(set.contains(c)) {
System.out.println(true);
flag = true;
break;
}
}
if(!flag) {
System.out.println(false);
}
}
publicstaticvoidmain(字符串[]args){
char[]A=“HR”。toCharArray();
char[]B=“RRR”。toCharArray();
Set=新树集();
布尔标志=假;
用于(字符c:A){
增加(c);
}
用于(字符c:B){
如果(集合包含(c)){
System.out.println(真);
flag=true;
打破
}
}
如果(!标志){
System.out.println(假);
}
}
使用第一个循环从第一个数组中获取每个元素
使用第二个循环检查第二个数组中的第一个元素
检查第一个数组中的当前值是否等于H或R
如果是,请检查它是否在第二个数组中,并返回true
public static boolean check() {
String s1 = "ABHEEF", s2 = "RDDFVW";
char[] arr1 = s1.toCharArray();
char[] arr2 = s2.toCharArray();
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr2.length; j++) {
if(arr1[i] == 'H' || arr1[i] == 'R') {
if(arr1[i] == arr2[j])
return true;
}
}
}
return false;
}
公共静态布尔检查(){
字符串s1=“ABHEEF”,s2=“RDDFVW”;
char[]arr1=s1.toCharArray();
char[]arr2=s2.toCharArray();
for(int i=0;i
很简单,只需添加一个嵌套循环即可
for(int i = 0; i < A.length; i++){
for(int j = 0; j < B.length; j++){
if(if B[j] ==A [i]){
return true
}
}
}
return false;
for(int i=0;i
使用Java 1.8,您可以执行以下操作:
//@Momir Sarac
String text1 = "b9H ello";
String text2 ="avn1c fk";
// 32 is for empty space character here, you could do i != ' ' and it would be the same
//turn text1 into intstream each int corresponding to it's char value
//filter empty space ints
//get only distinct out of them
//take a look for any match if some int is contained within text2
boolean result = text1.chars().filter(i->i != 32).distinct().anyMatch(character->text2.contains(String.valueOf(character)) || text2.lastIndexOf(character) != -1);
//print it on screen
System.out.printf("Two texts %s same letter(s).", result ? "have" : "don't have");
匹配的字符是否作为输入?或者是第一个数组中的任何字符?第一个数组在哪里?您只检查第二个数组中是否有“H”或“R”。