`
shukuiyan
  • 浏览: 414013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将一个交错数据合并为一个一维数组

阅读更多

最近参加笔试比较多,遇到这道题:

题目: 将一个交错数据合并为一个一维数组

输入: 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;
		}
	}
}
 
分享到:
评论
1 楼 jackroomage 2013-09-16  
(长度不定,个数不定) !!!!!!!!

相关推荐

    raw文件读取_RAW_raw数据读取_matlab显示raw_

    上述代码中,`fopen`函数用于打开文件,`fread`函数用于读取RAW文件的内容,`reshape`函数则将一维数组转换为二维图像矩阵。请注意,根据RAW文件的具体格式,可能需要对读取过程进行适当的调整。 MATLAB显示RAW数据...

    数据结构与算法:C#语言描述(中英文两版本)

    C#中的数组包括一维数组、多维数组和交错数组。 2. **链表**:线性数据结构,其中元素不是在内存中连续存储。C#中的LinkedList类提供了双向链表实现。 3. **栈**:后进先出(LIFO)的数据结构,常用操作为push...

    swift-PNG-纯Swift代码解析PNG格式返回图像原始像素数据和尺寸。

    5. **创建像素数组**:根据解析出的像素数据创建一个二维数组,表示图像的原始像素数据。 编码过程则是解码的逆过程,包括创建和填充IHDR块,处理像素数据,生成IDAT块,如果需要的话,添加tRNS块,最后添加IEND块...

    《软件开发基础(Java)》实验报告-Java多线程编程.docx

    1. 初始化一维数组,填充随机数据。 2. 将数组分成多个子数组,每个子数组对应一个线程。 3. 创建Worker线程类,继承自Thread类,重写run()方法,使用Arrays.sort()对子数组进行排序。 4. 使用CyclicBarrier同步工具...

    c语言试题及答案[定义].pdf

    - 数组的定义和使用,如`int a[2][3]`定义了一个二维数组。 - 指针运算,如`*(a+1)`表示访问数组第二个元素的地址,`** (a+1)+2`表示获取数组第二行的第三元素。 - 数组作为函数参数,理解值传递和引用传递的...

    川大研究生复试C语言

    假设有一个二维数组`int a[2][3] = {0, 2, 4, 6, 8, 10};`,那么: - `*(a+1)`返回的是数组`a`的第二行的起始地址,即`&a[1][0]`,而非元素6的地址。 - `*(*(a+1)+1)`返回的是数组`a`的第二行的第二个元素的值,即8...

    MSDN C#经典英文原版

    数组是C#中一种常用的数据结构,包括一维数组、多维数组和交错数组。C#编程指南中会介绍如何声明、初始化数组,以及如何使用foreach循环遍历数组中的元素。数组作为对象,还可以通过ref和out关键字来传递,这是进行...

    2013腾迅最新笔试题

    3. 数组表示:在C/C++中,`a[1][1]`、`*(&a[0][0])`、`*(*(a+1)+1)`都表示二维数组的同一个元素,而`*(&a[1]+1)`和`*(&a[0][0]+4)`则分别表示数组的第二个元素和第五个元素。 4. `printf`问题:在嵌套循环中,`...

    c#4.0语言规范

    15. **数组**:C#支持一维、多维和交错数组,以及数组的创建、初始化和操作。 16. **接口**:接口定义一组方法签名,不包含实现,用于定义类必须实现的行为。 17. **枚举**:枚举是一种值类型,用于定义一组命名的...

    matlab 习题matlab 习题.doc

    这是一个交错级数,可以使用循环计算或者自定义函数求和。 13. 分解偶数为两素数之和: 通常使用素数判断函数,然后对偶数进行分解。 14. 求满足条件的最大整数 `n`: 这涉及到求和问题,可以使用循环或递归...

    循环赛日程表(分治递归法)

    对于 \( n \) 位选手,我们可以创建一个二维数组表示比赛日程,其中行和列分别代表比赛的两个选手,数组中的值表示比赛的轮次。在递归过程中,我们可以先解决子问题,然后再将子问题的解融合到整个问题的解中。 ...

    delphi 开发经验技巧宝典源码

    0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...

    matlab中所有函数解析-太全了.docx

    60. `fminbnd`:寻找一维函数在指定区间的最小值。 61. `fminsearch`:使用单纯形法寻找多元函数的极值点。 62. `hsv`:创建HSV(色相、饱和度、亮度)颜色映射。 63. `functions`:查看函数句柄的定义。 64. `image...

    delphi 开发经验技巧宝典源码06

    0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...

    matlab函数大全(附有详细解释).pdf

    75. `double`: 将数据转换为双精度浮点数。 76. `drawnow`: 强制更新图形窗口,使动态绘图生效。 77. `dsolve`: 解常微分方程,支持符号计算。 78. `eedit`: 打开MATLAB的矩阵编辑器。 79. `eig`: 计算矩阵的特征值...

Global site tag (gtag.js) - Google Analytics