当前位置: 首页 > 知识库问答 >
问题:

查找两个数组的字符串之间的最大长度差

强才捷
2023-03-14

所以我试着使用一个嵌套循环,将长度加到一个int数组中,然后遍历int数组,找到最大的数,但它没有通过测试用例,我开始想,也许我把这个问题复杂化了,有一个更简单的方法。这是我试过的。

public static int mxdiflg(String[] a1, String[] a2) {
    int maxDiff=0;
    int[] lengths=new int[a1.length*a2.length];
    for(int i=0;i<a1.length;i++){
      for(int j=0;j<a2.length;j++){
        lengths[j]=Math.abs(a1[j].length()-a2[i].length());
      }
    }
    for(int i=0;i<lengths.length;i++){
      if(lengths[i]>maxDiff){
        maxDiff=lengths[i];
      }
        
    }
  
  return maxDiff;
  
}

共有2个答案

常茂
2023-03-14

你可以通过两个独立的循环来实现。

String[] a1 = { "ab", "cdefghik", "lsls" };
String[] a2 = { "a", "cdefghik", "lsls", "abcdefghijkl" };

int max = mxdiflg(a1, a2);
System.out.println(max);

印刷品

11
  • minvals初始化为最大int值,将maxvals初始化为0
  • 每个循环使用Math查找字符串的minmax。最小数学。最大值
  • 完成后,查找两个最大值的最大值,以及两个最小值的最小值
  • 最大值中减去最小值,就得到了结果
public static int mxdiflg(String[] a1, String[] a2) {
    int maxa1 = 0, mina1 = Integer.MAX_VALUE, maxa2 = 0,
            mina2 = Integer.MAX_VALUE;
    
    // find max and
    for (String s : a1) {
        int len = s.length();
        maxa1 = Math.max(maxa1, len);
        mina1 = Math.min(mina1, len);
    }
    for (String s : a2) {
        int len = s.length();
        maxa2 = Math.max(maxa2, len);
        mina2 = Math.min(mina2, len);
    }
    
    return Math.max(maxa1, maxa2) - Math.min(mina1, mina2);
}
    
}

浦毅
2023-03-14

假设Java 8和每个数组中的字符串数量合理,我建议使用以下方法来避免嵌套循环:

int a1max = Arrays.stream(a1).mapToInt(String::length).max().orElse(0);
int a1min = Arrays.stream(a1).mapToInt(String::length).min().orElse(0);
int a2max = Arrays.stream(a2).mapToInt(String::length).max().orElse(0);
int a2min = Arrays.stream(a2).mapToInt(String::length).min().orElse(0);

int maxDiff = Math.max(Math.abs(a2max-a1min), Math.abs(a1max-a2min));
 类似资料:
  • 问题内容: 在字符串数组中找到最长的字符串有一种简便的方法吗? 像什么? 问题答案: var longest = arr.sort(function (a, b) { return b.length - a.length; })[0]; 可能更有效,但仅自Javascript 1.8 / ECMAScript5起可用,并且在较旧的浏览器中默认不可用:

  • 问题是,我试图这么做,但我检查字符串长度的方法不起作用;我能做些什么来修复它?

  • 问题内容: 数据如下所示: 我希望它看起来像这样: 摆脱一个或另一个很简单。 这: 给我这样的建议:倡议:可信来源倡议:及时的倡议:数据库规范化 还有这个: 给我这个: 很难弄清楚如何将两者结合起来。 问题答案: 只是使用怎么样? 或者,如果您不知道前缀有多长时间: 这是一个。

  • 问题内容: 如何找到两个子字符串之间的字符串? 我当前的方法是这样的: 但是,这似乎效率很低而且不合Python。什么是做这样的更好的方法? 忘了提:该字符串可能无法启动,并最终和。他们之前和之后的字符可能更多。 问题答案:

  • 如何获得一个字符串与Python中的另一个字符串相似的概率? 我想得到一个十进制值,如0.9(意味着90%)等。最好使用标准Python和库。 e、 g。

  • 问题内容: 我正在尝试 使用循环从两个不同的用户输入中打印常用字母。(我需要使用for循环来完成它。)我遇到了两个问题:1.我的语句“ If char not in output …”没有提取唯一值。2.输出为我提供了单个字母列表,而不是单个字符串。我尝试分割输出,但是分割遇到类型错误。 问题答案: 您正在尝试执行“设置相交”。Python有 相同的方法。您可以将其用于您的用例,例如: 将返回字符