刷题_day2_vv
来源:互联网 发布:珠海远光软件 编辑:程序博客网 时间:2024/06/05 16:12
package com.vv;
/**
* 题目1描述:实现一个函数,把字符串中的所有空格换成%20
* 题目2描述:实现一个函数,把只含有*和数字的字符数组进行重排,所有数字放在最右边,*在最左边。
*
* 思路分析:
* 主要是从右到左倒着复制的技巧
* 第二题,把原字符数组也当做要复制的新数组,其实是原地复制。
*
* @author vv 2016.4.6
*
*/
public class day2 {
public static void main(String[] args) {
String s = " we are happy !";
char[] a = s.toCharArray();
// 构造足够大的字符数组,左半区为原字符数组元素,右半区全空。
char[] b = new char[100];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
// 空格替换
replace(b);
System.out.println(b);
// 字符串重排
String c = "12345";
char[] d = c.toCharArray();
modify(d);
System.out.println(d);
}
// 字符串替换
public static void replace(char[] chas) {
if (chas == null || chas.length == 0) {
return;
}
// 第一步:一次遍历,记录左半区字符总数,和空格数
int num = 0;
int len = 0;
for (len = 0; len < chas.length && chas[len] != 0; len++) {// 如果没有空格,防止越界
if (chas[len] == ' ') {
num++;
}
}
// 第二步:计算新长度最末元素位置
int newLen = len + num * 2 - 1;
// 第三步:从左半区的最后一个字符开始倒着遍历,同时复制到新长度最后的位置,并依次倒着复制
for (int i = len - 1; i > -1; i--) {
if (chas[i] != ' ') {
chas[newLen--] = chas[i];
} else {
chas[newLen--] = '0';
chas[newLen--] = '2';
chas[newLen--] = '%';
}
}
}
// 字符串重排
public static void modify(char[] chas) {
if (chas == null || chas.length == 0) {
return;
}
int t = chas.length - 1;
for (int i = t; i > -1; i--) {
if (chas[i] != '*') {
chas[t--] = chas[i];
}
}
for (; t > -1;) {
chas[t--] = '*';
}
}
}
/**
* 题目1描述:实现一个函数,把字符串中的所有空格换成%20
* 题目2描述:实现一个函数,把只含有*和数字的字符数组进行重排,所有数字放在最右边,*在最左边。
*
* 思路分析:
* 主要是从右到左倒着复制的技巧
* 第二题,把原字符数组也当做要复制的新数组,其实是原地复制。
*
* @author vv 2016.4.6
*
*/
public class day2 {
public static void main(String[] args) {
String s = " we are happy !";
char[] a = s.toCharArray();
// 构造足够大的字符数组,左半区为原字符数组元素,右半区全空。
char[] b = new char[100];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
// 空格替换
replace(b);
System.out.println(b);
// 字符串重排
String c = "12345";
char[] d = c.toCharArray();
modify(d);
System.out.println(d);
}
// 字符串替换
public static void replace(char[] chas) {
if (chas == null || chas.length == 0) {
return;
}
// 第一步:一次遍历,记录左半区字符总数,和空格数
int num = 0;
int len = 0;
for (len = 0; len < chas.length && chas[len] != 0; len++) {// 如果没有空格,防止越界
if (chas[len] == ' ') {
num++;
}
}
// 第二步:计算新长度最末元素位置
int newLen = len + num * 2 - 1;
// 第三步:从左半区的最后一个字符开始倒着遍历,同时复制到新长度最后的位置,并依次倒着复制
for (int i = len - 1; i > -1; i--) {
if (chas[i] != ' ') {
chas[newLen--] = chas[i];
} else {
chas[newLen--] = '0';
chas[newLen--] = '2';
chas[newLen--] = '%';
}
}
}
// 字符串重排
public static void modify(char[] chas) {
if (chas == null || chas.length == 0) {
return;
}
int t = chas.length - 1;
for (int i = t; i > -1; i--) {
if (chas[i] != '*') {
chas[t--] = chas[i];
}
}
for (; t > -1;) {
chas[t--] = '*';
}
}
}
0 0
- 刷题_day2_vv
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题。。。
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题
- 刷题!刷题!刷题网!!!
- POJ刷题
- java刷题
- LeetCodet刷题
- 简单谈谈java中匿名内部类构造函数-转自脚本之家
- 总结二、MFC消息映射
- iOS设置UILabel的行间距并自适应高度
- 欢迎使用CSDN-markdown编辑器
- 获取程序的版本名,版本名,应用名称
- 刷题_day2_vv
- openwrt开发<2>环境搭建
- Hadoop学习笔记(1):WordCount程序的实现与总结
- MyEclipse(以下简称mye)中的.jsp .html的可视化编辑对很多人来说,作用不是很大,反而影响视觉和软件的启动速度。
- 启动文件系统Kernel panic - not syncing: Attempted to kill init! 报错
- vs2013 制作安装包
- 归并排序(mergeSort)之递归实现
- 5. MySQL 备份
- 路漫漫其修远兮···VB 来15个数尝尝咸淡