0字符串中等 NC190 字符串的全部子序列

阅读: 评论:0

0字符串中等 NC190 字符串的全部子序列

0字符串中等 NC190 字符串的全部子序列

NC190 字符串的全部子序列

描述

给定一个字符串s,长度为n,求s的所有子序列
1.子序列: 指一个字符串删掉部分字符(也可以不删)形成的字符串,可以是不连续的,比如"abcde"的子序列可以有"ace",“ad"等等
2.将所有的子序列的结果返回为一个字符串数组
3.字符串里面可能有重复字符,但是返回的子序列不能有重复的子序列,比如"aab"的子序列只有”",“a”,“aa”,“aab”,“ab”,“b”,不能存在2个相同的"ab"
4.返回字符串数组里面的顺序可以不唯一

网友的代码:

每个字符有两个选择,选或者不选。

import java.util.*;
public class Solution {HashSet<String>set;public String[] generatePermutation (String s) {set = new HashSet<>();dfs(s,0,"");Array(new String[0]);}public void dfs(String s, int index, String str){if (index==s.length()){set.add(str);return;}dfs(s,index+1,str+s.charAt(index));dfs(s,index+1,str);}
}

回溯

  • 回溯穷尽所有子序列的可能
  • StringBuffer有deleteCharAt()方法,可以删除指定位置的字符
import java.util.*;
public class Solution {Set<String> set = new HashSet<>();public String[] generatePermutation (String s) {backTrace(s,0,new StringBuffer());String[] ans = new String[set.size()+1];int i = 0;for(String str : set){ans[i++] = str;}ans[set.size()] = "";return ans;}public void backTrace(String s, int index, StringBuffer sb){if(index == s.length()){return ;}for(int i = index; i < s.length(); i++){sb.append(s.charAt(i));set.String());backTrace(s,i+1,sb); sb.deleteCharAt(sb.length()-1);}}
}

本文发布于:2024-01-27 21:11:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063611142667.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符串   序列
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23