http://www.lai18.com/content/1587564.html
1、刚开始,输入abcd,我们从后往前遍历,
abcd->abc->ab->a,一次递归完成
2、将原字符串的第一个字符截下,用后面的字符组成一个新的字符串,开始新的遍历,即bcd,开始新的遍历,
bcd->bc->b
3、继续下去,cd->c
4、最后是d
给定一个字符串,输出其所有的连续子串,如给定字符串为abcd,则要输出其全部连续子串为:a,b,c,d,ab,bc,cd,abc,bcd,abcd
1、刚开始,输入abcd,我们从后往前遍历,
abcd->abc->ab->a,一次递归完成
2、将原字符串的第一个字符截下,用后面的字符组成一个新的字符串,开始新的遍历,即bcd,开始新的遍历,
bcd->bc->b
3、继续下去,cd->c
4、最后是d
public void successiveString(String str) { for (int i = str.length(); i >= 0; i--) // need optimization System.out.println(str.substring(0, i)); if (str.length() > 1) successiveString(str.substring(1)); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); new SuccessiveString().successiveString(str); }http://www.itmian4.com/thread-4340-1-1.html
- public static void main(String[] args) {
- Scanner ss=new Scanner(System.in);
- String s=ss.nextLine();
- char[] c=s.toCharArray();
- for(int i=0;i<c.length;i++)
- {
- System.out.print(c[i]+" ");
- StringBuffer temp=new StringBuffer();
- temp.append(c[i]);
- for(int j=i+1;j<c.length;j++)
- {
- temp.append(c[j]);
- System.out.print(temp.toString()+" ");
- }
- }
void AllSubstring3(const char *str,char *arr) { //穿入的arr的长度为len+1,最后一个位置保存'\0' int i,j; unsigned int len = strlen(str); strcpy(arr,str); for(i=len-1;i>=0;i--) { arr[i+1] = '\0'; for(j=i;j>=0;j--) printf("%s\t",&arr[j]); printf("\n"); } }不考虑输出字符串重复的问题吗? 比如输入“aab" 应该输出a,b,aab,aa,ab