请编写一个方法,将字符串中的空格全部替换为“ ”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
2017-05-29 16:47
1431 查看
请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。
测试样例:
方法2:新建一个数组,通过charAt(i)遍历字符串,如果不是空格,数组中对应的值为charAt(i),如果说空格则写入%20
方法3:将字符串放在单个数组中,然后通过替换后坐标后移的特性将其从后往前遍历然后替换
放入替换后的字符串时会发生数组下标越界
方法4:运用两个数组,和方法三类似
给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。
测试样例:
"Mr John Smith”,13
返回:"Mr%20John%20Smith"
”Hello World”,12
返回:”Hello%20%20World” 方法1:直接调用String类的方法replaceAll()
import java.util.*; public class Replacement { public String replaceSpace(String iniString, int length) { String s =iniString.replaceAll(" ","%20"); return s; } }
方法2:新建一个数组,通过charAt(i)遍历字符串,如果不是空格,数组中对应的值为charAt(i),如果说空格则写入%20
import java.util.*; public class Replacement { public String replaceSpace(String iniString, int length) { int count=0; for(int i=0;i<iniString.length();i++){ if(iniString.charAt(i)==' '){ count++; //计算空格数 } } char s[]=new char[iniString.length()+2*count];//算出数组所需大小 int j=0; for(int i=0;i<iniString.length();i++){ if(iniString.charAt(i)==' '){ s[j++]='%'; s[j++]='2'; s[j++]='0'; } else s[j++]=iniString.charAt(i); } return String.valueOf(s); } }
方法3:将字符串放在单个数组中,然后通过替换后坐标后移的特性将其从后往前遍历然后替换
(1)首先遍历原字符串,找出其中的空格数量 (2)根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。 (3)设置两个指针i和j分别指向原字符串和新字符串的末尾位置。 (4)如果i指向内容不为空格,那么将内容赋值给j指向的位置,如果i指 向为空格,那么从j开始赋值“02%”
import java.util.*; public class Replacement { public String replaceSpace(String iniString, int length) { int count=0; for(int i=0;i<iniString.length();i++){ if(iniString.charAt(i)==' '){ count++; } } char str[]=new char[iniString.length()+2*count]; for(int i=0;i<iniString.length();i++){ str[i]=iniString.charAt(i); } int i=iniString.length()-1; int j=iniString.length()+2*count-1; while(i>=0&&j>=0){ if(str[i]!=' ') str[j--]=str[i--]; else{ str[j--]='0'; str[j--]='2'; str[j--]='%'; i--; } } return String.valueOf(str); } }将字符串放入数组时选择使用charAt(i)遍历放入数组而不是使用String.toCharArray()的原因是,String.toCharArray()返回的数组长度和字符串长度大小相同,
放入替换后的字符串时会发生数组下标越界
方法4:运用两个数组,和方法三类似
import java.util.*; public class Replacement { public String replaceSpace(String iniString, int length) { int count=0; char s[]=iniString.toCharArray(); for(int i=0;i<s.length;i++){ if(s[i]==' '){ count++; } } char str[]=new char[s.length+2*count]; int j=str.length-1; int i=s.length-1; while(i>=0&&j>=0){ if(s[i]!=' ') str[j--]=s[i--]; else{ str[j--]='0'; str[j--]='2'; str[j--]='%'; i--; } } return String.valueOf(str); } }
相关文章推荐
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string
- 空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 编写函数,对标准输入进行扫描,并对“the”出现的次数进行计数。 进行比较时应区分大小写。认为一个单词有一个或多个空格字符分隔, 并且输入行在长度上不会超过100个字符,计数结果输出。
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。
- 给定一个字符串s由大小写字母和空白字符组成,返回字符串中最后一个字的长度。 如果最后一个字不存在,则返回0。
- 用java语言编写一个类,使该类包含一个方法f(),该方法具有可以输出同时带有大小写两种形式英文字母表的功能。
- 华为计算字符个数写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 2.写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 华为2写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 【Java】编写一个方法,将字符串中的空格全部替换为“ ”