《剑指》4
来源:互联网 发布:java招聘信息 编辑:程序博客网 时间:2024/05/16 17:18
题目:实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出“We%20are%20happy”
方法一:最直观的就是遍历字符串,每当遇到一个空格的时候将其替换成%20,然后继续扫描,但是得每一次都得移动空格之后的所有字符。
/** * 遍历字符串,遇到空格就替换成%20 * @param str * @return */ public static String replaceSpace1(String str) { if (str == null) { return null; } StringBuffer res = new StringBuffer(); for (int i = 0; i < str.length();) { while (i < str.length() && str.charAt(i) == ' ') { res.append("%20"); i++; } if (i < str.length()) { res.append(str.charAt(i)); i++; } } return res.toString(); }
方法二:这种方法是借助了Java中的StringBuilder这个类的特性,遍历整个字符串,同时将遍历的字符append进builder中去,遇到空格放入%20,直到字符串结束。(有局限性)
/** * 用辅助的数组,每当遇到空格就加上%20,不是空格就加上原有的字符 * @param str * @return */ public static String replaceSpace2(String str) { if (str == null) { return null; } StringBuilder newStr = new StringBuilder(); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { newStr.append('%'); newStr.append('2'); newStr.append('0'); } else { newStr.append(str.charAt(i)); } } return newStr.toString(); }
方法三:这种就是先获取空格数量,然后拓展数组,要新生成的数组长度是原字符串长度+空格数*2,然后从后往前遍历原字符串的同时,从后往前填充新的字符串。
/** * * 先统计空格数,然后 * @param str * @return */ public static String replaceSpace3(String str){ if(str == null|| str == ""){ return null; } //得到所有的空格数量 int spaceCount = 0; for(int i = 0;i<str.length();i++){ if(str.charAt(i) == ' '){ spaceCount++; } } //新字符串的长度 int newStrLen = str.length()+2*spaceCount; char[] newsChars = new char[newStrLen]; int indexOfOriginal = str.length()-1; int indexOfNews = newStrLen-1; //从后往前遍历,当遇到空格是替换成%20 while(indexOfOriginal>=0){ if(str.charAt(indexOfOriginal) == ' '){ newsChars[indexOfNews--] = '0'; newsChars[indexOfNews--] = '2'; newsChars[indexOfNews--] = '%'; indexOfOriginal--; }else{ newsChars[indexOfNews--] = str.charAt(indexOfOriginal--); } } return new String(newsChars); }
0 0
- 《剑指》4
- 剑指offer chapter 4
- 剑指Offer刷题(4)
- 剑指offer-java(4)
- 剑指Offer-4
- 【剑指offer】题目4
- 剑指Offer读书笔记4
- 剑指offer(4)
- 剑指offer:4-替换空格
- 剑指offer面试题4
- 剑指offer-4 替换空格
- 剑指offer 4- 替换空格
- 剑指offer 面试题4
- 剑指Offer-4-替换空格
- 《剑指offer》4:替换空格
- 剑指offer读书笔记(4)
- 【面试题】剑指offer 4
- 剑指Offer 4 替换空格
- Java难点解析(九)-多态
- Matlab2014+VS2013配置vlfeat0.9.20
- "||",或运算,取对才止,"&&"与运算,取错即止
- [Android]中ViewPager+PagerAdapter源码分析
- 236. Lowest Common Ancestor of a Binary Tree
- 《剑指》4
- 所谓的给力的插件,临存
- 断言(ASSERT)的用法
- 我今天学到的java
- 排序算法(一) 概述
- centos下git的安装与使用
- 走过yii框架联合查询的那些坑
- 三个免费的交互式Git学习网站
- fedora安装fcitx输入法