以下程序可以輸出如:
?aaa aab aac ...... aba abb ...... edd ede edf ...... zzx zzy zzz
的連續字符串。
修改START_STRING和END_STRING,也可以輸出任意位數的連續字符串,可用于窮舉遍歷。
代碼如下:
?1?
import?java.io.*;
?2?
?3?
/**
?4?
?*@author??comstep
?5?
?*@website?http://m.tkk7.com/tripper
?6?
?*/
?7?
?8?
public?class?AToZ?
?9?
{
10?
??private?String?str?=?"";
11?
??private?int?length?=?0;
12?
??private?char[]?ch;
13?
14?
??public?AToZ(String?str)
15?
??{
16?
????this.str?=?str;
17?
????this.length?=?str.length();
18?
????this.ch?=?str.toCharArray();
19?
??}
20?
21?
??public?String?getNextString()
22?
??{
23?
????for?(int?i?=?0,?j?=?length?-?1;?i?<?length?&&?j?>=?0;?i?++)
24?
????{
25?
??????if?(ch[j]?!=?'z')
26?
??????{
27?
????????ch[j]?++;
28?
????????break;
29?
??????}
30?
??????else
31?
??????{
32?
????????ch[j]?=?'a';
33?
????????j?--;
34?
????????continue;
35?
??????}
36?
????}
37?
38?
????return?new?String(ch);
39?
??}
40?
41?
??public?static?void?main(String[]?args)?throws?Exception
42?
??{
43?
????String?START_STRING?=?"aaa";
44?
????String?END_STRING?=?"zzz";
45?
46?
????AToZ?aTOz?=?new?AToZ(START_STRING);
47?
48?
????FileOutputStream?fout?=?new?FileOutputStream("out.txt");
49?
50?
????PrintWriter?printWriter?=?new?PrintWriter(fout);
51?
52?
????printWriter.println(START_STRING);
53?
54?
????int?count?=?1;
55?
56?
????while(true)
57?
????{
58?
??????START_STRING?=?aTOz.getNextString();
59?
60?
??????printWriter.println(START_STRING);
61?
62?
??????System.out.println(START_STRING);
63?
64?
??????count?++;
65?
66?
??????if?(START_STRING.equals(END_STRING))
67?
????????break;
68?
????}
69?
70?
????printWriter.println("共:"?+?count?+?"?個");
71?
72?
????System.out.println("共:"?+?count?+?"?個");
73?
74?
????printWriter.close();
75?
????fout.close();
76?
??}
77?
}
78?