力扣(412.516)补8.21

发布于:2022-10-16 ⋅ 阅读:(602) ⋅ 点赞:(0)

目前由于需要,c++和Java都要开始搞起来。Java代码一定会写上,c++代码看题目难度。

看了Java代码才发现Java的字符串操作感觉更麻烦一点。

412.Fizz Buzz

这题会,不难。

class Solution {

    public List<String> fizzBuzz(int n) {

        List<String> ans=new ArrayList<String>();

        for(int i=1;i<=n;i++){

            StringBuffer a=new StringBuffer();

            if(i%5==0&&i%3==0)

            ans.add("FizzBuzz");

            else if(i%5==0)

            ans.add("Buzz");

            else if(i%3==0){

            ans.add("Fizz");

            }

            else{

            a.append(i);

            ans.add(a.toString());

这里要注意把stringbuffer类型转换为string类型,才能用add方法。

}

        }

        return ans;

    }

}

516.最长回文子序列

这个子序列问题,想不到dp啊啊啊啊啊,啊啊啊。

这题跟着答案的思路,我自己用dp写,用了3层for循环,超时了诶。

因为我的遍历思路是把每个135度斜边看成一行遍历,再遍历下个135度斜边,就是斜着遍历到右上角。

果断跟着答案走。遍历思路是从右下角按横着的一行遍历,确实厉害👍🏻。

81e6260866024a4a9f0094b95d26db65.png

 

class Solution {

    public int longestPalindromeSubseq(String s) {

        int n = s.length();

        int[][] dp = new int[n][n];

        for (int i = n - 1; i >= 0; i--) {

            dp[i][i] = 1;

            char c1 = s.charAt(i);

            for (int j = i + 1; j < n; j++) {

                char c2 = s.charAt(j);

                if (c1 == c2) {

                    dp[i][j] = dp[i + 1][j - 1] + 2;

                } else {

                    dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]);

                }

            }

        }

        return dp[0][n - 1];

    }

}

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到