给定一段单词(由空格分隔),创建一个2D数组,其中每个数组代表该单词。请注意,单词大小相同。
示例输入#1
to2DChars("bat sat put mat")
样本输出#1
{{'b','a','t'},{'s','a','t'},{'p','u','t'},{'m','a','t'}}
示例输入#2
to2DChars("hi is to")
样本输出#2
{{'h','i'},{'i','s'},{'t','o'}}
在这里输入代码
public char[][] to2DChars(String words){
int row=0;
int index=words.indexOf(' ');
int col=index;
while(index!=-1){
row++;
index=words.indexOf(' ',index+1);
}
row++;
char[][] c=new char[row][col];
int k=0;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
c[i][j]=words.charAt(i+k);
k++;
}
测试用程序通过/失败参数实际输出预期输出
一个测试用例没有通过可以有人告诉我如何解决这个问题吗?
答案 0 :(得分:1)
显然,你没有考虑单字输入。下面的内容应该可以使用(未经测试的代码):
public char[][] to2DChars(String words){
int row=0;
int index=words.indexOf(' ');
int col=(index==-1 ? words.length() : index);
while(index!=-1){
row++;
index=words.indexOf(' ',index+1);
}
row++;
char[][] c=new char[row][col];
int k=0;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
c[i][j]=words.charAt(i+k);
k++;
}
答案 1 :(得分:0)
我写了另一个解决方案。如果有人有兴趣看看。
public char[][] to2DChars(final String words) {
final String[] splittedWords = words.split(" ");
final char[][] result = new char[splittedWords.length][];
for (int i = 0; i < splittedWords.length; i++) {
result[i] = new char[splittedWords[i].length()];
for (int j = 0; j < splittedWords[i].length(); j++) {
result[i][j] = splittedWords[i].charAt(j);
}
}
return result;
}