Day 25

第58题:

给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。来源:力扣(LeetCode)

1、寻找字符串的最后一个单词长度,可以直接从后面排除最后的结尾符号,然后向前遍历;

  当遇到第一个空格符时,就可以得出最后一个单词的长度。

  

  

第97题:

给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。来源:力扣(LeetCode)

示例 1:

输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出: true
示例 2:

输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出: false

1、s3这个字符串是否由s1和s2交错组成的,看了题解是用动态规划,创建一个二维数组dp;

  横坐标 i 表示s1的字符串长度,纵坐标 j 表示s2的字符串长度;

  然后dp[i][j]就表示s1的前 i 个字符和s2的前 j 个字符能否构成s3的前i + j个字符;

  例如dp[0][0]=true时,这时候说明s1的前0个字符和s2的前0个字符可以构成s3的前0个字符,所以dp[0][0]=true;

  就这样动态规划到dp[i][j]的最后,得出结果。

  其实这里面会将整个二维数组内的值都求出来;

  比如第0行的时候,遍历这行的列值如果只有前几个相同或者一个都不相同时,这些不相同的内部都会设为false;

  到最后查看最右下角的值是否为true即可。

  

  

posted @ 2020-07-18 23:52  Liang-Yi  阅读(86)  评论(0编辑  收藏  举报