笔试中的编程题1
时间:2011-03-19 来源:OAKPIP
1 --- 求子串:输入一个字符串,打印出该字符串的所有子串:如输入"abc",则输出a,b,c,ab,bc,abc(不要求输出顺序)
解析: 看清题目,是求子串,不是求abc三个字符的排列组合。
例,如果是"abcde", 则输出: a, b, c, d, e, ab, bc, cd, de, abc, bcd, cde, abcd, bcde, abcde,
1 public static void printSubString(String data) {
2 System.out.print(data + ","); // 一上来就打印全串。
3 // 从每个字符那把原串,切成两半,
4 for (int i = 1; i < data.length(); i++) {// 下标从1开始
5 System.out.print(data.substring(0, i) + ",");
6 System.out.print(data.substring(i) + ",");
7 }
8 // 得到中间的子串, 如, abcde 则为: bcd
9 String middleSubString = data.substring(1, data.length() - 1);
10 int midLength = middleSubString.length();
11 if (midLength > 1) {// 当中间的子串,长度大于1时 递归调用。
12 printSubString(middleSubString);
13 } else if (midLength == 1) {// 中间字串,长度为1时,直接打印出来。
14 System.out.print(middleSubString + ",");
15 }
16 }
相关阅读 更多 +