1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:找一个二维数组中中间大小的值与输入的目标值进行比较,通过比较大小移动二维数组的索引,选取的是右上角的元素作为比较的对象。
public class Solution {
public boolean Find(int target, int [][] array) {
boolean found = false;
int row = array.length; //获取二维数组的行数
int col = array[0].length; //获取二维数组的列数
int lie = col-1;
int hang = 0;
while(hang<row&&lie>=0){
int value = array[hang][lie];
if(target>value){
hang++; //移动到下一行
}
else if(target<value){
lie--; //移动到上一列
}else{
found=true;
return found;
}
}
return found;
}
}
2、请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
先了解一下StringBuffer类型
有两种思路,一种是就在原字符串中进行修改,另一种是再new一个字符串对象,用来保存替换后的字符串。
在原字符串上进行修改:
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null)
{
return null;
}
for(int i=0;i<str.length();i++)
{
char c = str.charAt(i);
if(c==' ')
{
str.replace(i,i+1,"%20");
}
}
String newstr = str.toString();
return newstr;
}
}
replace方法:
public StringBuffer replace(int start, int end, String str)