WordTo2DChar,除了函数索引之外不使用任何其他字符串函数

时间:2015-09-02 13:17:19

标签: java arrays string

给定一段单词(由空格分隔),创建一个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++;
        }

测试用程序通过/失败参数实际输出预期输出

3通过'abcd'{{'a'}; {'b'}; {'c'}; {'d'}} {{'a'}; {'b'}; {'c' }; { 'D'}}

4失败'你好'null {{'h','e','l','l','o'}}

一个测试用例没有通过可以有人告诉我如何解决这个问题吗?

2 个答案:

答案 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;
}