最近参加笔试比较多,遇到这道题:
题目: 将一个交错数据合并为一个一维数组
输入: strJaggedArray[][], 由多个一维数组(长度不定,个数不定)组成的交错数组
输出: strArray[], 由strJaggedArray[r][c]中的元素以"&"为分隔符拼合而成, 是strJaggedArray中数组元素的无重复组合(不考虑顺序)
举例:
输入: strJaggedArray[0]=new string[] {"we","are","student"};
strJaggedArray[1]=new string[] {"say","what"};
输出: strArray[]={"we&say","we&what","are&say","are&what","student&say","student&what"}
输入: strJaggedArray[0]=new string[] {"cs","app"};
strJaggedArray[1]=new string[] {"good","cool","dev"};
strJaggedArray[2]=new string[] {"king","of","the","world"};
输出: strArray[]={"cs&good&king","cs&good&of","cs&good&the","cs&good&world","cs&cool&king","cs&cool&of","cs&cool&the","cs&cool&world",...}
代码:
public class ExchangeArray {
public static void main(String args[]){
String a[][]=new String[4][];
a[0]=new String[]{"cs","app"};
a[1]=new String[]{"good","cool","dev"};
a[2]=new String[]{"king","of","the","world"};
a[3]=new String[]{"hello","every","one","how","are","you"};
for(int i=0;i<a.length;i++){
System.out.println();
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+" ");
}
}
System.out.println("the result is:");
String b[]=exchange(a);
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
}
public static String[] exchange(String exchange[][]){
String result[][]=exchangeArray(exchange);
return result[0];
}
public static String[][] exchangeArray(String exchange[][]){
if(exchange.length>=2){
int len1=exchange[0].length;
int len2=exchange[1].length;
int len=len1*len2;
String temp []=new String[len];
int index=0;
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
temp[index++]=exchange[0][i]+"&"+exchange[1][j];
}
}
String copy[][]=new String[exchange.length-1][];
for(int i=2;i<exchange.length;i++){
copy[i-1]=exchange[i];
}
copy[0]=temp;
return exchangeArray(copy);
}else{
return exchange;
}
}
}
分享到:
相关推荐
上述代码中,`fopen`函数用于打开文件,`fread`函数用于读取RAW文件的内容,`reshape`函数则将一维数组转换为二维图像矩阵。请注意,根据RAW文件的具体格式,可能需要对读取过程进行适当的调整。 MATLAB显示RAW数据...
C#中的数组包括一维数组、多维数组和交错数组。 2. **链表**:线性数据结构,其中元素不是在内存中连续存储。C#中的LinkedList类提供了双向链表实现。 3. **栈**:后进先出(LIFO)的数据结构,常用操作为push...
5. **创建像素数组**:根据解析出的像素数据创建一个二维数组,表示图像的原始像素数据。 编码过程则是解码的逆过程,包括创建和填充IHDR块,处理像素数据,生成IDAT块,如果需要的话,添加tRNS块,最后添加IEND块...
1. 初始化一维数组,填充随机数据。 2. 将数组分成多个子数组,每个子数组对应一个线程。 3. 创建Worker线程类,继承自Thread类,重写run()方法,使用Arrays.sort()对子数组进行排序。 4. 使用CyclicBarrier同步工具...
- 数组的定义和使用,如`int a[2][3]`定义了一个二维数组。 - 指针运算,如`*(a+1)`表示访问数组第二个元素的地址,`** (a+1)+2`表示获取数组第二行的第三元素。 - 数组作为函数参数,理解值传递和引用传递的...
假设有一个二维数组`int a[2][3] = {0, 2, 4, 6, 8, 10};`,那么: - `*(a+1)`返回的是数组`a`的第二行的起始地址,即`&a[1][0]`,而非元素6的地址。 - `*(*(a+1)+1)`返回的是数组`a`的第二行的第二个元素的值,即8...
数组是C#中一种常用的数据结构,包括一维数组、多维数组和交错数组。C#编程指南中会介绍如何声明、初始化数组,以及如何使用foreach循环遍历数组中的元素。数组作为对象,还可以通过ref和out关键字来传递,这是进行...
3. 数组表示:在C/C++中,`a[1][1]`、`*(&a[0][0])`、`*(*(a+1)+1)`都表示二维数组的同一个元素,而`*(&a[1]+1)`和`*(&a[0][0]+4)`则分别表示数组的第二个元素和第五个元素。 4. `printf`问题:在嵌套循环中,`...
15. **数组**:C#支持一维、多维和交错数组,以及数组的创建、初始化和操作。 16. **接口**:接口定义一组方法签名,不包含实现,用于定义类必须实现的行为。 17. **枚举**:枚举是一种值类型,用于定义一组命名的...
这是一个交错级数,可以使用循环计算或者自定义函数求和。 13. 分解偶数为两素数之和: 通常使用素数判断函数,然后对偶数进行分解。 14. 求满足条件的最大整数 `n`: 这涉及到求和问题,可以使用循环或递归...
对于 \( n \) 位选手,我们可以创建一个二维数组表示比赛日程,其中行和列分别代表比赛的两个选手,数组中的值表示比赛的轮次。在递归过程中,我们可以先解决子问题,然后再将子问题的解融合到整个问题的解中。 ...
0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...
60. `fminbnd`:寻找一维函数在指定区间的最小值。 61. `fminsearch`:使用单纯形法寻找多元函数的极值点。 62. `hsv`:创建HSV(色相、饱和度、亮度)颜色映射。 63. `functions`:查看函数句柄的定义。 64. `image...
0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...