Day 2:替换空格

时间:2022-07-24
本文章向大家介绍Day 2:替换空格,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

剑指Offer_编程题——替换空格

题目描述:

请实现一个函数,将一个字符串中的每个空格替换为“%20”。例如,当字符串为:We Are Happy.则经过替换之后的字符串为:We%20Are%20Happy.

具体要求:

时间限制: C/C++ 1秒,其他语言2秒 空间限制: C/C++32M,其他语言64M

具体实现:

1、正常用java实现

public class Solution{
	public String replaceSpace(StringBuffer str){
		String result = str.toString ();
		if(result.contains (" ")){
			while(str.indexOf(" ")!= str.lastIndexOf(" ")){
				int index = str.indexOf(" ");
				str.replace(index, index+1, "%20");
			}
				int index = str.indexOf(" ");
				str.replace(index, index + 1, "%20");
				result = str.toString();
				return result;
		}else{
			return result;
		}
	}
}

其效果如图所示:

2、代码优化

public class Solution{
	public String replaceSpace(StringBuffer str){
		int index = str.indexOf(" ");
		while(index != -1){
			str.replace(index, index+1, "%20");
			index = str.indexOf(" ", index);
		}
			String result = str.toString();
			return result;
	}
}

其效果如图所示:

3、代码进一步优化

public class Solution{
	public String replaceSpace(StringBuffer str){
		int n = str.length();
		int ii = 0;
		for(int i = 0;i < n;i++){
			if(str.charAt(i) == ' ')
				ii++;
		}
			int nn = 2 * ii + n;
			int index = nn - 1;
			char[] ct = new char[nn];
			while (n > 0){
				if (str.charAt (n - 1) != ' ')
					ct[index--] = str.charAt (n - 1);
				else{
					ct[index--] ='0';
					ct[index--] = '2';
					ct[index--] = '%';
				}
					n--;
			}
				return String.valueOf(ct);
	}
}

代码效果如图所示:

4、接下来用python将其实现

class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        i = 0
        n =len(s)
        ss=[]#用于盛放转化完的字符串
        for i in range(n):
            if s[i].isspace():#判断是否为空格
                ss.append('%20')
            else:
                ss.append(s[i])
            i +=1
        ss=''.join(ss)#将列表转成字符串
        return ss

5、通过python语言对代码进行进一步优化

class Solution:
	def replaceSpace(self, s):
		return s.replace(' ', '%20')

代码效果如下:

总结

  本道题主要考察我们对字符串的替换以及遍历,我们可以通过replace()函数进行快速的写出代码,但是时间执行和空间占用较多,因此,我们得通过charAt()进行重写replace()函数。继续加油,争取早日找到工作,Good Luck!!!

参考文献

[1] wyallen [2] 太阳旁边的星星