public class StringPermutation {
public static List<String> getPermutation(String input) {
List<String> collection = null;
if (input.length() == 1) {
collection = new ArrayList<String>();
collection.add(input);
return collection;
} else {
collection = getPermutation(input.substring(1));
Character first = input.charAt(0);
List<String> result = new ArrayList<String>();
for (String str : collection) {
for (int i = 0; i < str.length(); i++) {
String item = str.substring(0, i) + first
+ str.substring(i);
result.add(item);
}
String item = str.concat(first.toString());
result.add(item);
}
return result;
}
}
public static void main(String[] args) {
List<String> test = StringPermutation.getPermutation ("CAT");
System.out.println (test);
}
}
위의 코드는 주어진 문자열을 바꾸어줍니다. 예를 들어 cat
이 주어지면 [cat, act, atc, cta, tca, tac
]이 반환됩니다.이 코드는 우수하지만 내 코드를 편집하여 문자의 하위 집합도 표시 할 수 있습니다 (예 : cat, act, atc, cta, tca, tac] and [at, ta, tc, ca, ac, ct, c, a, t
)?모든 조합을 문자로 바꿉니다.
내가 무엇을 요구하는지 이해하기를 바랍니다. 당신이 이해 못하면 내가 더 설명해 줄 것을 알리라. 고마워, 고마워. 당신이 "고양이" 하위 집합이 될 것입니다 그래서 만약
Set<String> subsets;
public void generateSubsets(String current, String left) {
if (left.length() == 0) {
subsets.add(current);
} else {
generateSubsets(current, left.substring(1));
generateSubsets(current + left.charAt(0), left.substring(1));
}
}
List<String> allPermutations(String word) {
subsets = new HashSet<String>();
generateSubsets("", word);
List<String> result = new ArrayList<String>();
for (String subset : subsets) {
result.addAll(StringPermutation.getPermutation(subset));
}
return result;
}
:
숙제? . 태그를 붙이십시오. 그건 그렇고,이 질문은 여러 번 여기에 답변을 믿습니다하지만 난 너 자신 (그것은 hw 뒤에 포인트입니다) – Pepe
lol 이것은 숙제가 안드로이드 애플 리케이션을 만드는 오전 노력하고 노력하는 것이 좋습니다 .. 이것은 program.i의 단지 섹션은 그것을 테스트하기 위해 APK를 보낼 수 있지만 아직 완료되지 않았습니다. 그 대답을 할 수 있다면 링크를 넣어주십시오. – ImGeorge