题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一、调用函数(my)
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replace(" ", "%20");
}
}
二、用新的数组存
StringBuffer sb = new StringBuffer();
for(int i=0;i<str.length();i++)
{
if(str.charAt(i) == ' ')
{
sb.append("%20");
}else
{
sb.append(str.charAt(i));
}
}
return sb.toString();
三、扩展当前字符串的空间
1.分析
- 计算替换后的字符串需要多大的空间,并对原字符串空间进行扩容;
- 从后往前替换字符串的话,每个字符串只需要移动一次;
- 如果从前往后,每个字符串需要多次移动,效率较低。
2.代码
```java 链接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423?answerType=1&f=discussion 来源:牛客网
public class Solution { public String replaceSpace(StringBuffer str) { int spacenum = 0; for(int i = 0; i < str.length(); i++){ if(str.charAt(i) == ‘ ‘){ spacenum++; } } int oldLength = str.length(); int oldIndex = oldLength - 1; int newLength = oldLength + spacenum*2; str.setLength(newLength); int newIndex = newLength - 1; for(; oldIndex >= 0 && oldLength < newLength; oldIndex—){ if(str.charAt(oldIndex) == ‘ ‘){ str.setCharAt(newIndex—, ‘0’); str.setCharAt(newIndex—, ‘2’); str.setCharAt(newIndex—, ‘%’); }else{ str.setCharAt(newIndex—, str.charAt(oldIndex)); } } return str.toString(); } } ```