笔试题之交错数组 Java递归求解 – Red

题目: 将一个交错数据合并为一个一维数组输入: 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",…}

好久没玩玩TopCoder了,工作时间不允许,看到这样的题目多多少少有种熟悉的感觉….,如果现在再打TopCoder的话,因该比去年进步了很多了吧……..

本来是C#的题,不过最近学JAVA又没书看,只好找题做了…

publicclassExchangeArray…{/***//***@AuthRed_angelX*@paramargs*/publicstaticvoidmain(String[]args)…{//TODOAuto-generatedmethodstubString[][]strJaggedArray=newString[3][];strJaggedArray[0]=newString[]…{"cs","app"};strJaggedArray[1]=newString[]…{"good","cool","dev"};strJaggedArray[2]=newString[]…{"king","of","the","world"};String[]strArray=Exchange(strJaggedArray);for(inti=0;i<strArray.length;i++)…{System.out.println(strArray[i]);}}/***//***函数*@paramstrJaggedArray*@return*/publicstaticString[]Exchange(String[][]strJaggedArray)…{String[][]temp=DoExchange(strJaggedArray);returntemp[0];}/***//***递归*@paramstrJaggedArray*@return*/privatestaticString[][]DoExchange(String[][]strJaggedArray)…{intlen=strJaggedArray.length;if(len>=2)…{intlen1=strJaggedArray[0].length;intlen2=strJaggedArray[1].length;intnewlen=len1*len2;String[]temp=newString[newlen];intIndex=0;for(inti=0;i<len1;i++)…{for(intj=0;j<len2;j++)…{temp[Index]=strJaggedArray[0][i]+"&"+strJaggedArray[1][j];Index++;}}String[][]newArray=newString[len-1][];for(inti=2;i<len;i++)…{newArray[i-1]=strJaggedArray[i];}newArray[0]=temp;returnDoExchange(newArray);}else…{returnstrJaggedArray;}}}

人情似纸张张薄,世事如棋局局新。

笔试题之交错数组 Java递归求解 – Red

相关文章:

你感兴趣的文章:

标签云: