注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
(1)找所有对称子序列
static List<String> findsequence(String s){
int index = 0;
StringBuffer cur = new StringBuffer();
Set<String> ret = new HashSet<String>();
DFS(s,ret,cur,index);
return new ArrayList<String>(ret);
}
static void DFS(String s, Set<String>ret, StringBuffer cur, int index){
if(cur.length() != 0 && isValid(cur) && !ret.contains(cur.toString())){
ret.add(cur.toString());
}
for(int i = index; i < s.length(); i++){
char c = s.charAt(i);
cur.append(c);
DFS(s,ret,cur,i + 1);
cur.deleteCharAt(cur.length() - 1);
}
}
static boolean isValid(StringBuffer s){
int left = 0;
int right= s.length() - 1;
while(left < right){
if(s.charAt(left) != s.charAt(right)) return false;
left++;
right--;
}
return true;
}
(2)给一颗2叉树/非BST. 返回所有sum 为target的path,不一定要从root开始,结尾也不一定是leaf。任意节点开始结尾都行。
|