字符数组的长度难道在其他语言是可变的?如果是那就不是数组了,而是封装了自动扩容的数组类或列表等。
就算在C中这种方法也要首先扩展原字符数组,而且有一条原则是最好不要修改传给函数的参数,那么一般还是会重新创建一个数组再进行操作。
所以重新创建一个数组没问题啊。。
没看过这个剑指offer不清楚这题它所谓的精髓在哪。。但是你那样确实还是O(n)。
就算在C中这种方法也要首先扩展原字符数组,而且有一条原则是最好不要修改传给函数的参数,那么一般还是会重新创建一个数组再进行操作。
所以重新创建一个数组没问题啊。。
没看过这个剑指offer不清楚这题它所谓的精髓在哪。。但是你那样确实还是O(n)。
public class ReplaceMethodTest { public static void main(final String[] args) {
String string = "We Are Happy";
System.out.println(replaceMethod(string));
} public static String replaceMethod(final String inputString) {
return inputString.replace(" ", "%20");
}
}
We%20Are%20Happy是说用Java如何实现replace方法吗?还是仅仅如何使用replace方法?
public static void main(final String[] args) {
String string = "We Are Happy";
System.out.println(replaceString(string));
}
public static String replaceString(final String inputString) {
return inputString.replace(" ", "%20");
}
因为你的对手都是对指针了如指掌的大神;如果你用C/C++写,可能写的不会完全对,但面试官会看你的思路、设计思想,代表你还有翻盘的机会。
但如果用Java、python、JavaScript等等语言来处理指针的话,明摆着是将Offer拱手相让!
System.out.println(str.replaceAll(" ","%20"));用java写不就是两行代码吗?没明白楼主要表达什么意思?
你实际只需要把字符串读一遍,然后根据每个char的值等不等于'='来判断给可变长度字符串中添加什么内容public class Test {
public static void main(String[] args) throws Exception {
String s = "We Are Happy";
System.out.println(replaceMethod(s));
}
private static String replaceMethod(String s) {
StringBuffer buffer=new StringBuffer();
if(s!=null){
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);
if(ch==' '){
buffer.append("%20");
}else{
buffer.append(ch);
}
}
}
return buffer.toString();
}
}