黑马程序员技术交流社区

标题: 求大神指点. [打印本页]

作者: 13699475949    时间: 2017-2-1 20:27
标题: 求大神指点.
编程列出一个字符串的全部字符组合情况。原始字符串中没有重复字符。
        例如:
        原始字符串是“abc”,打印得到下列所有组合情况:
        “a” “b” “c”
        "ab" "ac" "ba" "bc" "ca"  "cb"
        "abc"  "acb"  "bac" "bca"  "cab" "cba"
作者: 随性自然    时间: 2017-2-1 22:23
能用数组试试!先把字符串转换成数组,然后搭配输出。

作者: 宇轩H    时间: 2017-2-1 22:31
第一步,编写方法判断字符串是否有重复
第二步,接收用户输入字符串,并调用判断重复方法,如果有重复则提示用户重新输入
第三步,将字符串转换为字符数组,并获取字符数组长度
第四步,编写方法,接收一个字符串数组 s 和一个字符数组 c ,返回字符串数组 ns,
首先创建一个长度为(c.length - s[0].length)*s.lengtn字符串数组 ns ,然后使用两个for循环嵌套,i<s.length,j<c.length,判断s[i]中有没有c[j],没有则将c[j]拼接到s[i]末尾并将结果顺序添加到ns数组中,最好将ns数组返回。
第五步,定义arraylist<String>集合list,和字符串数组 temp ,首先将字符数组 c 转成字符串数组并把值赋给temp,并将temp存储至list中,然后定义for循环,i<c.length,循环中调用第四步写的方法,将temp和c作为参数,把返回结果赋给temp,并把temp添加至list集合
第六步,将list集合打印


作者: 宇轩H    时间: 2017-2-1 22:34
应该是这个样子

作者: 宇轩H    时间: 2017-2-1 22:36
我没试,楼主自己再敲一遍代码试试吧,思路应该没错

作者: If_091021    时间: 2017-2-2 18:35
写一个静态方法,传入一个字符数组和它的长度,返回一个list<String>, 用递归。比方说字符串“abc”,它的作用是把"abc","acb","bac","bca","cab","cba",所有长度为3的字符串写出来。这样就完成了大部分的内容。
再写一个静态方法,它的作用是找出给定字符数组的所有子集。
我的思路是这样的,代码的话今晚或者明天发吧
作者: If_091021    时间: 2017-2-4 17:43
package com.luan.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Qiaolll {
       
        public static List<String> zuhe(char[] chr,int size)
        {       
                List<String> ls= new ArrayList<String>();
                if(size == 1)
                {       
                        String s=String.valueOf(chr[0]);
                        ls.add(s);
                        return ls;
                }
                for(int i=0;i<chr.length;i++)
                {
                        String st = String.valueOf(chr[i]);
                        char[] chr1 = new char[size-1];
                        for(int j=0;j<size-1;j++)
                        {
                                if(j==i)
                                {
                                        chr1[j] = chr[size-1];
                                        continue;
                                }
                                chr1[j]=chr[j];
                        }
            List<String> ls1 = zuhe(chr1,size-1);
            Iterator<String> itr = ls1.iterator();
            while(itr.hasNext())
            {
                    ls.add(st+itr.next());
            }
                }
                return ls;
        }
       
        public static void main(String[] args)
        {
                String string ="abcd";
                char[] ss = string.toCharArray();
                List<String> ar = zuhe(ss,string.length());
               
                Iterator<String> it = ar.iterator();
        while(it.hasNext())
        {
                System.out.println(it.next());
        }
        System.out.println(ar.size());
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2