在java中从字符串数组中识别最大距离元素

elcex8rz  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(417)

我有一个要求,我必须从一个数组中找到一个元素,它的出现距离最大。
如果有两个搜索条件相等,则返回条件在第一次搜索和最后一次搜索之间的距离最长。给定以下数组['c++'、'java'、'c#'、'c#'、'java'、'python'、'c#'、'java'],我们的程序应该返回“搜索最多的词是java”
注意:“java”和“c#”都搜索了3次,但是程序应该返回“java”,因为它的第一次和最后一次搜索之间的距离大于“c#”。
我尝试搜索,我可以找到距离(6),但无法返回值(java)。
非常感谢大家的投入。我在js中成功地做到了这一点。我只是在找java的帮助。我可以发布我的js代码。
谢谢

9njqaruj

9njqaruj1#

class Wou {
public static int main(String args[]) {
    String s = "";
    for(String x: args)
        s+=x;
    int h = 0, p = -1;    //p is for storing distance and h is for maximum distance between two strings in String 's'.
    String word = "";
    int len = args.length;
    for(int i=0;i<len;i++) {
        int cc = s.lastIndexOf(args[i])-s.indexOf(args[i]);
        if (cc>h){
            h = cc;
            for(int j=len-1;j>=0;j--)
                if(args[i]==args[j]) {
                    p = j-i;
                    break;
                }
            word = args[i];
        }
        s.replaceAll(args[i],"");
    }
    System.out.println("Most searched term is "+word);
    return p;
}
}
0s7z1bwu

0s7z1bwu2#

这是我试过的代码-

String[] a ={"C++", "Java", "C#", "C#", "Java", "Python", "C#", "Java"};
    String val ="";

     int maxDist = 0;
       for(int i=0; i<a.length; i++)
       {
          int firstOcc = -1;
          int lastOcc = -1;

          for(int j=0; j<a.length; j++)
          {
             if(a[i] == a[j])
             {
                 //val=a[j];
                 if(firstOcc == -1)
                   firstOcc = lastOcc = j;
                 //val=a[j];
             }
                else
                {
                   lastOcc = j;
                 val=a[j];
             }
          }
          if(lastOcc - firstOcc > maxDist)
             maxDist = lastOcc - firstOcc;

       }
       System.out.println("Most searched term is " + val);
}

相关问题