替换字符串里的空格与基本字符串压缩
2015-09-17 10:58
399 查看
我并没用到lengh参数,首选算出有多少个空格,然后构造新的数组,主要为了解决空间问题。然后查到到空格的位置并将之后的元素都向后移动两个元素,原来的查找跳3步,如果没找到空格跳1步下标。最后就找到空格,依次插入%20即可。
public static String replaceSpace(String iniString, int length) { // write code here char[] charArray = iniString.toCharArray(); //首先输出有多少个空格 int count = 0; for(int i = 0;i < charArray.length;i ++) { if(charArray[i] == ' ') { count ++; } } //重新初始化数组,每多一个空格要多开辟两个空间 char[] newArray = new char[charArray.length + count * 2]; //赋值 for(int i = 0;i < charArray.length;i ++) { newArray[i] = charArray[i]; } //移动并插入 for(int i = 0;i < newArray.length;) { if(newArray[i] == ' ') { //该下表后的元素都要移动2个 //从后向前 for(int j = newArray.length - 1;j >= i + 2;j --) { newArray[j] = newArray[j - 2]; } i += 3; } else { i ++; } } //空间已经满足条件 //准备插入 for(int i = 0;i < newArray.length;i ++) { if(newArray[i] == ' ') { newArray[i] = '%'; newArray[i + 1] = '2'; newArray[i + 2] = '0'; } } return String.valueOf(newArray); }
// write code here //转换成char数组 char[] cArray = iniString.toCharArray(); //定义一个StringBuffer用来拼接 StringBuffer sb = new StringBuffer(); //定义一个有没压缩的布尔变量,默认为没压缩 boolean isSub = false; for (int i = 0,count = 1; i < cArray.length;) { //先拼接 sb.append(cArray[i]); //记录连续的数字,防止数组溢出 if(i + 1 < cArray.length) { for(int j = i + 1;cArray[i] == cArray[j];j ++) { //满足条件则存在压缩,布尔变量为真 isSub = true; count ++; //跳出循环 if(j == cArray.length - 1) { break; } } } //拼接数字,并将外层循环跳到下一个不同的字符上去 if(count != 1) { sb.append(count); i += count; count = 1; } else { //如果没有相同的,则为1 sb.append(1); i ++; } } //判断布尔并返回 return isSub?sb.toString() : iniString;
相关文章推荐
- java实现链表
- 链表
- 二进制移位溢出
- 设计+的时代来了:2015设计成就中国高峰论坛在沪成功举行
- Android自动化测试shell脚本(飞车Asphalt5)
- Nmcli 网络管理命令行工具基础
- 使用curator操作zookeeper
- ipad ------ 与iPhone的差别
- 测试jdbc连接下,mysql和mycat的吞吐性能
- SqlBulkCopy 批量导入数据 转换表字段类型
- mysql使用GTID跳过事务
- JavaScript之数据类型
- MODBUS之FREEMODBUS移植
- 在Android中使用Junit测试注意事项
- const char*, char const*, char*const的区别
- ARCEngine中Raster数据的相关操作
- 【转】【opencv】仿射变换
- 公众号第三方平台开发 教程四 代公众号发起网页授权说明
- 浅谈Weka
- 禁止输入表情的EditText