解决方案 »

  1.   

    在Java中新建一个char[1000]的数组,并只往前面10个添加数据,然后length还是1000
    java中char 型有默认值的,char[1000],系统会默认给1000个char的初始字符
    在C/C++中英文结束符是\0 或许c++在初始化的时候不给默认值的吧,不懂
      

  2.   

    有个感觉自己绕不清楚的问题:查了很多资料,知道Java是没有数组/字符串结束符的,自己也写代码试了下,发现确实如此,在Java中新建一个char[1000]的数组,并只往前面10个添加数据,然后length还是1000,(在C/C++中英文结束符是\0,所以会自动判断到length是2【求证实】)
    证实:没有结束符。这样的话上面这个代码感觉无解了==
    首先函数中传入了char[]和字符串的长度,然后因为字符串由空格变成了‘%20’,字符串的长度是增加了的,即代码里的newLength长度,但是因为Java里面没有指针,所以newLength没法返回给main函数,所以需要在void main里面自己判断replace后的数组有多长……但是又因为Java没有结束符==没法判断!
    方法签名改成带有返回值的:
    private static char[] ReplaceSpace1(char[] str, int length) 
    因为题目说实际程度给出了,且数组有足够空间,你创建一个新的length长度的char[],然后对传入的char[]进行逐个扫描,并给新char[]赋值,扫描赋值过程中进行替换。
    现在的写法是for (int i = 0; str[i] != '\0'; i++) ,但是万一字符串中本身就有\0呢?还是说不要考虑这种情况%>_<%
    不考虑
      

  3.   

    现在的写法是for (int i = 0; str[i] != '\0'; i++) ,但是万一字符串中本身就有\0呢?还是说不要考虑这种情况%>_<%
    补充,不用这个循环了,换成这个:for(int i=0; i<length; i++)
      

  4.   

    如果样例输入中有输入的length
    你用一个变量a记录转换后的长度初始为length,然后每碰到一个空格,a+2(实际上加长了2位)
    可以同时写入你的char数组,另外用一个下标,写入char[i]----char[i+2].最后用a的值做循环条件输出。
      

  5.   


    方法签名没必要带入返回值吧,char[]会直接改变的,类似于C++中的应用?这样设置了返回值效果不还是一样么这里的话,你的意思是处理完操作后,新建一个char[]?因为函数内部知道修改后的char[]长度是newLength,所以新建一个char[]类型,长度就定为newLengh并返回这个char[],这样就解决了这个问题了是吗??
    但是有2个问题:
    1、题目要求是In place,所以不可以用额外空间吧,毕竟长度还是和输入的n有关
    2. 函数返回值为char[],在void main里面要怎么写?难道和string类型一样,直接
    char[] newChar
    newChar = ReplaceSpace1_4(......)这样吗?
      

  6.   


    如果新建了一个char[]并返回这个char[],这个length是指这个新char[]的length吗?还是什么???好像题目说了you are given the "true" length of the string,假设告诉你长度=。=
      

  7.   


    这个a 保存到哪呢?
    a做为一个保存输出长度的变量 不知道你的疑问是?a作为保存输出长度变量的话,这样所有的内容都必须在void main函数中完成吧,Java中没有指针的概念,函数中的参数并不会影响实参的值……把算法单独放在一个method中似乎就无法完成了
      

  8.   

    楼主,不知道你原始的代码从何而来。
    反正,Java世界,几乎(如果不是绝对的话)不会有void ReplaceSpace1(char[] str, int length)这样子的方法。甚至很少用字符数组。Java世界,操作的一般都是
    /**
     * 对原始字符串进行xxx替换操作。
     * @original 原始字符串
     * @return 替换后的字符串 
     */
    String repaceXxx(String original)
    是否需要static,看情况