392. 判断子序列
题目描述
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
示例 1
s = "abc", t = "ahbgdc"
返回 true.
示例 2
s = "axc", t = "ahbgdc"
返回 false.
解
题目难得的给数据范围了2333
因为子串不需要连续,所以直接两个变量ij指向s和t的初始位置。如果s[i]==t[j]则i和j同时加1,否则j+1,i不变。
如果i能移动到s的末尾就返回True。
class Solution {
public:
bool isSubsequence(string s, string t) {
int ssize=s.size();
if(!ssize)return 1;
for(int i=0,j=0;i<t.size();i++)
{
if(t[i]==s[j])
{
j++;
if(j==ssize)return 1;
}
}
return 0;
}
};
104. 二叉树的最大深度
题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
解
还能说啥,二叉树遍历==
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
return root==NULL?0:max(maxDepth(root->right),maxDepth(root->left))+1;
}
};