数组中最长的字符串(重复)

时间:2017-01-20 16:54:29

标签: java arrays string

我编写了程序,找到了数组中最长的字符串。现在我需要额外的功能。如果n-string的最大字母数等于m-string

,则只包括在输出中复制字符串

例如输入是:

  1. 这个
  2. 应该是
  3. 最长的
  4. 字符串
  5. in a array
  6. 输出应为:

    1. 最长的
    2. in a array
    3. 因为它们(11个字母)都是最长的字符串(不仅是第一个字符串,而且两者都是!)。提前谢谢!

      以下代码:

       public static void main(String[] args) throws Exception
            {
          ArrayList<String> list = new ArrayList<String>();
          ArrayList <Integer> numList = new ArrayList<Integer>();
      
          BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      
          for(int i=0; i<5; i++) {
              String s = reader.readLine();
              list.add(i, s);
              numList.add(i, s.length());
          }
      
          int maxN = numList.get(0);
          String maxS = list.get(0);
      
          for(int i=0; i<list.size(); i++) {
      
              if(numList.get(i)>maxN) {
                  maxN=numList.get(i);
                  maxS = list.get(i);
              }  
          } 
          System.out.println(maxS);
      }
      

2 个答案:

答案 0 :(得分:1)

您可以添加另一个包含结果的列表并迭代条目。

ArrayList<String> result = new ArrayList<>();
for(int i=0;i<list.size();i++){
    if(list.get(i).length()==maxS){
       result.add(list.get(i));
       System.out.println(list.get(i));
    }
}

答案 1 :(得分:0)

如果你要比较数组元素的字符串长度,那么在迭代初始的 list ArrayList时,要严格处理遇到的那些长度。不是你不能但是没有必要创建另一个整数ArrayList来保存原始列表 ArrayList中包含的所有内容的元素字符串长度,因为你可以通过初始迭代来建立它。这完全取决于您在执行迭代时设置的条件。

正如@Efka已经指出的那样,你可以拥有另一个String ArrayList来保存最长(和相同)长度的实际元素字符串,然后显示这些结果。

自然地假设您已成功填充列表 ArrayList并使用字符串元素:

ArrayList <String> dupList = new ArrayList<>(); // Will hold the results

// Need to start somewhere so...
// Initialize maxN with the string length of the first
// element contained within the 'list' ArrayList. 
int maxN = list.get(0).length(); 

// Add the first element to the duplicate list.
dupList.add(list.get(0));

// We start our iteration from 1 instead of 0
// because we've already processed index 0
// above to establish a starting point.
for(int i = 1; i < list.size(); i++) {
    int length = list.get(i).length(); //get the element length
    if(length >= maxN) {
        if (length > maxN) { 
            // Clear the duplicate list since there is
            // now an elemental string that is longer.
            dupList.clear(); 
            // Set maxN to the new longest length
            maxN = list.get(i).length(); 
        }
        // Add the new longest or equal to the longest
        // element encountered to the duplicate list.
        dupList.add(list.get(i));
    }
} 

要显示确定的结果,您可以使用以下几种方式:

// Display the determined results...
for (int i = 0; i < dupList.size(); i++) {
    System.out.println(dupList.get(i));
}