题解 | #字符串的排列,使用辅助boolean[]来标记#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.*; public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> res = new ArrayList<>() ; if(str == null || str.length() == 0) return res ; char[] arr = str.toCharArray() ; Arrays.sort(arr) ; help(arr , new boolean[arr.length] , new StringBuilder() , res) ; return res ; } //使用辅助数组,进行标记 public void help(char[] arr , boolean[] isV , StringBuilder sb ,ArrayList<String> res) { if(sb.length() == arr.length) { res.add(sb.toString()) ; return ; } for(int i = 0 ; i < arr.length ; i ++) { if(isV[i]) continue ; //处理重复的情况 if(i > 0 && arr[i] == arr[i - 1] && !isV[i - 1]) continue ; isV[i] = true ; sb.append(String.valueOf(arr[i])) ; help(arr , isV , sb , res) ; sb.deleteCharAt(sb.length() - 1) ; isV[i] = false ; } } }
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录