为了账号安全,请及时绑定邮箱和手机立即绑定

搜索字符数组以查看字符是否匹配

搜索字符数组以查看字符是否匹配

尚方宝剑之说 2022-09-07 21:06:31
我有两个 char 数组,它们将两个字符串作为输入。如果两侧的 char 具有匹配的 char,例如,将 char 数组转换为字符串 char A 和 B 都至少有一个 H 或 R,则它将返回 true。如果不是,则返回 false。>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我很困惑如何制定这样的规则?
查看完整描述

5 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您可以在此处使用,这将在一次迭代中给出结果。使用进一步减少执行时间,因为它消除了重复java.util.Setjava.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);

    }

}


查看完整回答
反对 回复 2022-09-07
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以做的是使用 For 在 matriz 中迭代,并验证当前项是“R”还是“H”。


boolean returnedValue = false;


for(int i = 0; i< B.length; i++){

  char currentItem = B[i];

  if(currentItem == 'R' || currentItem == 'H'){

    returnedValue = true;

 }

}


return returnedValue;


查看完整回答
反对 回复 2022-09-07
?
潇湘沐

TA贡献1816条经验 获得超6个赞

好吧,它很简单,你所要做的就是添加一个嵌套的循环


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;


查看完整回答
反对 回复 2022-09-07
?
冉冉说

TA贡献1877条经验 获得超1个赞

使用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");



查看完整回答
反对 回复 2022-09-07
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

使用第一个循环从第一个数组中获取每个元素。


使用第二个循环检查第二个数组中的第一个元素。


检查第一个数组中的当前值是否等于 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;

    }


查看完整回答
反对 回复 2022-09-07
  • 5 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信