目录
删除一个字符串中所有出现的给定字符串
(CVTE面试题)给你俩个字符串:str1:"welcome to China" str2:"come" 请删除第一个字符串当中,出现的第二个字符串当中的字符。
结果:wl t China
思路:我们可以用集合来完成这道题,可以New一个顺序表。然后遍历str1,当str1中的字符不在str2中,就把该字符放入顺序表中。
public static ArrayList<Character> func(String str1,String str2){
ArrayList<Character> arrayList = new ArrayList<>();
for (int i = 0; i < str1.length(); i++) {
//加“”是因为contains比较的是字符串,用+“”就把str1.charAt(i)这个字符变成了字符串
if(!str2.contains(str1.charAt(i)+"")){
arrayList.add(str1.charAt(i));
}
}
return arrayList;
}
public static void main(String[] args) {
String str1 = "welcome to China";
String str2 = "come";
ArrayList<Character> arrayList = func(str1,str2);
//打印arrayList里面的元素
for (int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i));
}
}
运行结果:
杨辉三角
链接:力扣
思路:给定我们方法的返回值是一个集合里面的元素是集合,可以简单理解成一个二维数组。
通过下图可以发现每一行的第一个元素和最后一个元素都是1,中间元素的个数是所在行数-1,中间元素的值是上一行该元素所在列数的元素+上一行该元素所在列数-1的元素:
代码:
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> listList = new ArrayList<>();
List<Integer> list1 = new ArrayList<>();
list1.add(1);
listList.add(list1);
//第一行已经放入了listList中了
for (int i = 1; i < numRows ; i++) {
//当前行
List<Integer> curRow = new ArrayList<>();
curRow.add(1);//开始的1
//前一行
List<Integer> preRow = listList.get(i-1);
//中间元素
for (int j = 1; j < i ; j++) {
int num = preRow.get(j)+preRow.get(j-1);
curRow.add(num);
}
curRow.add(1);//最后的1
listList.add(curRow);
}
return listList;
}