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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Always, 中级黑马   /  2015-5-11 12:45  /  1287 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入一个字符串,显示出字符串的所有排列。例如:输入"abc",就得输出"abc"、"acb"、"bac"、"bca"、"cab"、"cba" 所有可能的序列。

22 个回复

倒序浏览
柳叶飞刀 来自手机 中级黑马 2015-5-11 12:48:31
沙发
用位运算可以实现不?
回复 使用道具 举报
柳叶飞刀 发表于 2015-5-11 12:48
用位运算可以实现不?

import java.util.Arrays;
public class CharList {

    //遍历所有可能的排列结果
    public static void traversal(char[] chss, int index){
        //for循环,从index位置开始向前(向右), index位置的数与i位置的数互换
        for(int i = index; i < chss.length; i ++) {
            char[] chs = Arrays.copyOf(chss, chss.length);    //Copy出新数组(为了修改其值时互不影响)
            char temp = chs[index];
            chs[index] = chs;
            chs = temp;
            if(index == chs.length-1) {    //到了字符串末, 输出结果
                System.out.println(new String(chs));
                break;    //跟出此次循环, 此traversal方法执行完毕,跳回上一级循环(在上一个方法体中)
            }
            traversal(chs, index+1);        //递归
        }
    }

    //Test
    public static void main(String[] args) {
        String str = "abcd";
        char[] chs = str.toCharArray();    //转成字符数组
        traversal(chs, 0);
    }

}


用递归的话可以实现,位运算没有试过。
回复 使用道具 举报
Always, 发表于 2015-5-11 12:52
import java.util.Arrays;
public class CharList {

楼主是现场笔试吗?
回复 使用道具 举报
0 0 用笔写吗??

这个能一次性写出来??

程序不是逐渐增加的么;一次写出来,除非背下来。。。
回复 使用道具 举报
大西洋 发表于 2015-5-11 13:45
0 0 用笔写吗??

这个能一次性写出来??

大多数算法题只用到少量基本的API和常见数据结构,写不出来是思路问题,不是背不背得下来的问题
回复 使用道具 举报
fantacyleo 发表于 2015-5-11 14:09
大多数算法题只用到少量基本的API和常见数据结构,写不出来是思路问题,不是背不背得下来的问题 ...

感谢回答,我有时候看到老师写代码,都是这里加一点,那里加一点,最后才变成一段完整的;
笔试的话,除非用铅笔+橡皮擦,如果用圆珠笔岂不是画的一团糟。。。?
回复 使用道具 举报
这个跟数组排序差不多  用第三方接收  然后改变位置  创建一个换位置的方法
回复 使用道具 举报
我觉得能不能把abc存入集合ArrayList,在将集合的索引对应的排序,再取值输出转成字符串,输出。
回复 使用道具 举报
据说转成数组然后遍历好做
回复 使用道具 举报
全排列,康拓展开~
回复 使用道具 举报
用循环解决 +IndexOf 就可以搞定
回复 使用道具 举报
你已经笔试过了吗
回复 使用道具 举报
本帖最后由 l763631191 于 2015-5-11 21:19 编辑

这样的考题真的有意思么
回复 使用道具 举报
其实只要有思路 就好做了
回复 使用道具 举报 1 0
谢谢,这个可以说很有帮助
回复 使用道具 举报
zgjswp 发表于 2015-5-11 13:33
楼主是现场笔试吗?

   这是公司面试时候的题目。
回复 使用道具 举报
大西洋 发表于 2015-5-11 13:45
0 0 用笔写吗??

这个能一次性写出来??

           用IDE写出来的,,不是用笔写,,
回复 使用道具 举报
大西洋 发表于 2015-5-11 16:49
感谢回答,我有时候看到老师写代码,都是这里加一点,那里加一点,最后才变成一段完整的;
笔试的话,除非 ...

               IDE工具有很多可以自动生成的代码,如果是不是核心代码的话一般你cv的话也是可以的,不过具体的代码简化跟核心功能需要你详细的实现。
回复 使用道具 举报
w401634075 发表于 2015-5-11 18:30
我觉得能不能把abc存入集合ArrayList,在将集合的索引对应的排序,再取值输出转成字符串,输出。 ...

              大家有空可以自己写写试试,实现核心功能就好,代码还是可以有很多种方法的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马