删除一个字符串中所有出现的给定字符串,杨辉三角。

目录

删除一个字符串中所有出现的给定字符串

杨辉三角


删除一个字符串中所有出现的给定字符串

(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;
    }

猜你喜欢

转载自blog.csdn.net/qq_62712350/article/details/127090014
今日推荐