标签:技术分享 pac 解题思路 ++ 移动 turn off ace dex
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
本题中需要注意,新的字符串的长度要比旧的字符串长度长,这意味着,从前往后替换的话,每更换一次,后面的字符就要向后移动。因此,在替换的过程中需要考虑到时间复杂度和空间复杂度的问题。
public class Solution { public String replaceSpace(StringBuffer str) { int spaceNum = 0; //1.先计算出字符串中的空格数 for(int i = 0; i < str.length(); i ++){ if(str.charAt(i) == ‘ ‘){ spaceNum ++; } } //旧数组下标 int indexold = str.length() -1; //新数组下标 int indexnew = str.length() + 2*spaceNum -1; int index = indexnew; String str1 = ""; //定义新的数组 char[] strArr = new char[indexnew+1]; for(int j = indexold; j >= 0; j --){ if(str.charAt(j) != ‘ ‘){ strArr[index] = str.charAt(j); index--; }else{ strArr[index] = ‘0‘; strArr[index-1] = ‘2‘; strArr[index-2] = ‘%‘; index-=3; } } // strArr[0] = str.charAt(0); //将字符数组转变为String for(int k = 0; k < strArr.length; k++){ str1+=strArr[k]; } return str1; } }
测试结果:
标签:技术分享 pac 解题思路 ++ 移动 turn off ace dex
原文地址:http://www.cnblogs.com/lfdingye/p/6127448.html