替換字符串空格 - Java - StringBuffer


問題描述:

請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之后的字符串為We%20Are%20Happy。

基本思路:

逆序替換,降低時間復雜度

實現方案:

  • String一旦初始化,無法改變。
  • 使用StringBuffer,是因為牛客網的模板。
  • 實際使用中,單線程建議是用StringBuilder,因其無鎖,效率高。
  • 多線程中,使用StringBuffer。
  • 兩者的內置函數是相同的

思考:

  • 在原有字符串上更改,還是新建字符串(原有的話,需要重新設置長度setLength())
  • 不考慮使用現有replace()

代碼:

public static String replaceSpace(StringBuffer str){
		
		int length = str.length();
		int spacenum = 0;
		
		//統計空格字符個數
		for(int i=0;i<length;i++){
			if(str.charAt(i) == ' ')
				spacenum++;
		}
		
		int lengthNew = length + spacenum*2;
		str.setLength(lengthNew);
		int index = length-1;
		int indexNew = lengthNew-1;

		for(;index>=0;index--){
			
			if(str.charAt(index) == ' '){
				str.setCharAt(indexNew--, '0');
				str.setCharAt(indexNew--, '2');
				str.setCharAt(indexNew--, '%');
			}
			else{
				str.setCharAt(indexNew--, str.charAt(index));
			}
		}
		return str.toString();
	}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM