【问题标题】:java| how to create block same-length String爪哇|如何创建块相同长度的字符串
【发布时间】:2020-10-13 13:39:54
【问题描述】:

我想构建十个大小为 n 的数组,并放置在第一个长度为 1 的字符串中,在第二个长度为 2 的字符串中,依此类推,其中第十个数组的字符串长度为 10。

Array String = { a, b, the , c , no, yes, and, or, ...}

Array length_string = [ 1 , 1, 3,   1 , 2, 3,  3 , 2 , ....}

我不明白怎么做,将相同长度的字符串放入块中:

 [a,b,c]  //every string length =1 
 
 [no,or]   // every string length =2

 [the,yes,and]  // every string length =3

等等

编辑:

我发现哈希映射适用于我的代码 `final Map<Integer, List> lengthToWords = new TreeMap<>( Arrays.stream(words).collect(Collectors.groupingBy(String::length)));

但是如何控制块大小 我的意思是希望每个块 = 256

1 [ a , b ,c ,...] 数字元素 =256 ,仅此而已

2 [ aa, bb, cc ,..] 数字元素 =256

以此类推,直到十个街区 我使用循环有十个块,现在我需要块内的限制数字元素

【问题讨论】:

  • 字符串的最大长度是多少?还是你提供?
  • mainArray 我给每个测试的大小(可能是 500 或一千左右,它是文件文本),但是十个数组(块)是固定大小 256,块中的条件是相同长度的字符串.

标签: java arrays search block string-length


【解决方案1】:

您好,如果您的解决方案不需要高效或数组大小有限,您可以使用嵌套循环来实现。

for(int i =1;i<=n;i++){
    for(int j = 0;j<stringArray.length;j++){
        if(i == stringArray[j].length){
               resultArray[i-1] = stringArray[j];
               break;
        }
        else
            continue;
    }
}

小心检查arrayIndexOutOfBound异常

【讨论】:

    【解决方案2】:
    String[] arr= { "a", "b", "the" , "c" , "no", "yes", "and", "or"};
         String length1="[";
         String length2="[";
         String length3 ="[";
        
         for (int i = 0; i < arr.length; i++) 
         {
            switch(arr[i].length())
           {
           case 1:
        length1=length1+ arr[i]+",";
        break;
        case 2:
        length2=length2+ arr[i]+",";
        break;
        case 3:
        length3=length3+ arr[i]+",";
        break;
        
           }
        
        }
        
        if (length1.endsWith(",")) {
            length1 = length1.substring(0, length1.length()-1);
        }
        if (length2.endsWith(",")) {
            length2 = length2.substring(0, length2.length()-1);
        }
        if (length3.endsWith(",")) {
            length3 = length3.substring(0, length3.length()-1);
        }
        
        length1=length1+"]";
           length2=length2+"]";
           length3=length3+"]";
        
           System.out.println(length1);
           System.out.println(length2);
        
           System.out.println(length3);
    

    输出:

    [a,b,c]
    [no,or]
    [the,yes,and] 
    

    【讨论】:

      【解决方案3】:

      以下是带有示例输入的完整 Java 代码。 createBlockList 执行以下操作: 1) 创建一个列表列表来存储结果。 2)遍历字符串数组并将字符串放入正确的列表中。

      import java.util.*;
      public class MyClass {
        public static void createBlockList(String[] strArr, int[] strLenArr) {
           List<List<String>>resList = new ArrayList<>();
           for(int i=0; i<3; i++) {
               resList.add(new ArrayList());
           }
           for(int i=0; i<strArr.length; i++) {
               int strLen = strLenArr[i];
               resList.get(strLen-1).add(strArr[i]);
           }
       }
       public static void main(String []args){
          String str[] = {"a","b","in","on","the","and"};
          int len[] = {1,1,2,2,3,3};
          createBlockList(str, len);
       }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 2012-12-23
        • 1970-01-01
        相关资源
        最近更新 更多