練習問題:文字列内の文字の任意の組合せを出力する
1840 ワード
タイトル
問題のように、文字列「abc」が与えられると仮定すると、「a」、「b」、「c」の3文字の任意の可能な組合せ結果を出力する必要がある.
構想とコード
最初に考えたのは最も愚かな全循環で、時間と労力を費やして、pass;そして最初は再帰的な方法でやろうと思い、参考にしてみたら、自分で書いたjavaコードは以下の通りです.
そしてpythonで1つ書こうとしたが失敗した(私のバージョンは3.6.5).主にpythonでリストt 1をリストt 2に割り当てると、リストt 1とリストt 2のいずれかを操作し、2つのリストが同期するので、辞書でやってみてもいいような気がしますか?でも、今日は眠くて次回やってみました.anywayコードは以下の通りです.
問題のように、文字列「abc」が与えられると仮定すると、「a」、「b」、「c」の3文字の任意の可能な組合せ結果を出力する必要がある.
構想とコード
最初に考えたのは最も愚かな全循環で、時間と労力を費やして、pass;そして最初は再帰的な方法でやろうと思い、参考にしてみたら、自分で書いたjavaコードは以下の通りです.
import java.util.ArrayList;
import java.util.List;
public class test {
static String string = "abcde";
static char[] chars = string.toCharArray();
private static void Add1More(List list){
sout(list);
for(int i = 0;i < chars.length;i++){
if(!list.contains(i)){
List temp = new ArrayList<>(list);
temp.add(i);
Add1More(temp);
}
}
}
private static void sout(List list){
if(list.size() == chars.length){
for (int i =0;i < list.size();i++) {
Integer n =list.get(i);
System.out.print(chars[n] + "");
}
System.out.println();
}
}
public static void main(String[] args) {
for(int i = 0;i < chars.length;i++){
List list = new ArrayList<>();
list.add(i);
Add1More(list);
}
}
}
そしてpythonで1つ書こうとしたが失敗した(私のバージョンは3.6.5).主にpythonでリストt 1をリストt 2に割り当てると、リストt 1とリストt 2のいずれかを操作し、2つのリストが同期するので、辞書でやってみてもいいような気がしますか?でも、今日は眠くて次回やってみました.anywayコードは以下の通りです.
def AddOne(list):
sout(list)
for i in range(len(List)):
if List[i] not in list:
tmp = list
tmp.append(List[i])
AddOne(tmp)
def sout(list):
print(''.join(list))
if __name__ == "__main__":
String = 'abcde'
List = list(String)
for q in List:
temp = []
temp.append(q)
AddOne(temp)