A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 13699475949 中级黑马   /  2017-2-1 20:27  /  898 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

编程列出一个字符串的全部字符组合情况。原始字符串中没有重复字符。
        例如:
        原始字符串是“abc”,打印得到下列所有组合情况:
        “a” “b” “c”
        "ab" "ac" "ba" "bc" "ca"  "cb"
        "abc"  "acb"  "bac" "bca"  "cab" "cba"

6 个回复

倒序浏览
能用数组试试!先把字符串转换成数组,然后搭配输出。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
第一步,编写方法判断字符串是否有重复
第二步,接收用户输入字符串,并调用判断重复方法,如果有重复则提示用户重新输入
第三步,将字符串转换为字符数组,并获取字符数组长度
第四步,编写方法,接收一个字符串数组 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集合打印

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
我没试,楼主自己再敲一遍代码试试吧,思路应该没错
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
写一个静态方法,传入一个字符数组和它的长度,返回一个list<String>, 用递归。比方说字符串“abc”,它的作用是把"abc","acb","bac","bca","cab","cba",所有长度为3的字符串写出来。这样就完成了大部分的内容。
再写一个静态方法,它的作用是找出给定字符数组的所有子集。
我的思路是这样的,代码的话今晚或者明天发吧
回复 使用道具 举报
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());
        }
}
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马