剑指offer面试题4(java实现)
来源:互联网 发布:树莓派能做什么 知乎 编辑:程序博客网 时间:2024/06/06 00:37
题目
请实现一个函数,把字符串中的每个空格替换成“%20”例如输入“We are happy.”则输出“We%20are&20happy.”
说明
要实现这个函数,对于java来说非常容易。java JDK中集成的String类可以对字符串进行多种操作,例如长度的获取、字符串的截取、字符串的替换等方法。而此题目要求的把字符串中的每个空格替换成“%20”就可以通过String类实现,没有时间复杂度的考虑。
String类的使用
public String replaceBlank(String string){ if(string==null||string.length()<=0){ return null; } String ss = string.replaceAll(" ", "%20"); return ss; }
Java数组的实现
采用String类实现显然体现不了算法的高效,而使用字符数组来模拟字符串时,发现java中的数组是有长度的,而不同于c语言这种不定长度存储的语言,使用结束符来动态改变数组的大小,显然可以通过控制结束符的位置来定数组的大小,进而使用算法节省内存。而java数组只能通过空间换取时间来实现,而算法的优越性体现不出来(这里主要的算法思想是从后向前复制,避免了从前向后复制带来的移动开销)先看一下代码
public static char[] replaceBlank(char[] string) { if (string == null || string.length <= 0) { return null; } int orginalLength = string.length; int blankCount = 0; for (int i = 0; i < orginalLength; i++) { if (string[i] == ' ') { blankCount++; } } int newLength = orginalLength + blankCount * 2; char[] newString = new char[newLength]; // 从前向后复制 int i = 0; int j = 0; while (i < orginalLength && j < newLength) { if (string[i] == ' ') { newString[j++] = '%'; newString[j++] = '2'; newString[j++] = '0'; } else { newString[j++] = string[i]; } i++; } //从后往前复制 /* int i = orginalLength; int j = newLength; while (i >= 0 && j > i) { if (string[i] == ' ') { newString[j--] = '%'; newString[j--] = '2'; newString[j--] = '0'; } else { newString[j--] = string[i]; } i--; }*/ return newString; }
少年不知愁滋味,为赋新词强说愁。没有必要为了C语言中的不定数组,在java中实现一种类似的算法,理解算法万岁。
0 0
- 剑指offer面试题4(java实现)
- 剑指Offer(第2版) 面试题3、面试题4,Java实现
- 剑指offer 面试题51 java实现
- 剑指offer面试题汇总-Java实现
- 剑指offer--面试题4:替换空格--Java实现
- 剑指Offer面试题4:替换空格 Java实现
- 剑指offer-面试题7:俩个栈实现队列(java)
- 剑指offer面试题3(java实现)
- 剑指offer面试题5(java实现)
- 剑指offer面试题7(java实现)
- 剑指offer面试题21(java实现)
- 剑指offer面试题22(java实现)
- 剑指Offer:面试题4——替换空格(java实现)
- 剑指offer面试题4 替换空格(java)
- 剑指Offer面试题4(Java版),替换空格
- 剑指Offer面试题4(Java版):替换空格
- 【剑指offer】面试题2:实现Singleto模式 java
- 剑指offer--面试题6:重建二叉树--Java实现
- Android开发笔记(一)
- zabbix3.0.2 监控mysql服务down的时候不触发报警的问题修复
- CSDN启航
- python通过pyhdfs连接hdfs的安装配置
- flume学习(六):使用hive来分析flume收集的日志数据
- 剑指offer面试题4(java实现)
- 关于sample per symbol(sps)
- 《Android5从入门到精通》
- C++ 中类模板
- PJSIP增加保存AVI文件功能
- JAVA中的“抽象接口”
- VS误删Microsoft Help Viewer 2.0 解决办法
- flume学习(七)、(八):如何使用event header中的key值以及自定义source
- 简单的sql server操作