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即可。