ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

[算法学习]Java实现字符串全排列

来源:网络整理     时间:2016-01-25     关键词:

本篇文章主要介绍了"[算法学习]Java实现字符串全排列",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 思路:这里用到递归的方式完成字符数据的全排列,递归确实很方便。看似没用到辅助空间,实际上却是消耗了栈空间(“递归栈”),递归用起来也不是那么简单,解决问题用递归...

思路:这里用到递归的方式完成字符数据的全排列,递归确实很方便。看似没用到辅助空间,实际上却是消耗了栈空间(“递归栈”),递归用起来也不是那么简单,解决问题用递归的时候,一定要关注到两个零界点,怎么开始和怎么结束。


代码

/**
 * 实现字符数组全排列
 * 
 * @author kesar
 * 
 */publicclassTestPermute{publicstaticvoidpermute(String str) 
    {

        char[] ca = str.toCharArray();
        permute(ca, 0, ca.length - 1);
    }

    /**
     * 核心方法:用了递归的方式完成全排列,用递归的思路是要怎么开始,怎么结束,想想这两个临界点。
     * @param str
     * @param low
     * @param hight
     */publicstaticvoidpermute(char[] str, int low, int hight) 
    {

        if (low == hight) 
        {
            // 递归结束for (int i = 0; i <= hight; i++)
                System.out.print(str[i]);
            System.out.println();
        } 
        else        {
            for (int i = low; i <= hight; i++) 
            {
                //首先交换开始的字符位置(这里交换字符值不能用异或,会出现奇怪字符)//这个交换是思路的关键,因为不想用辅助空间(一用就很多浪费),所以才选择交换位置。char temp = str[low];
                str[low] = str[i];
                str[i] = temp;

                // 递归开始
                permute(str, low + 1, hight);
            }
        }
    }

    /**
     * @param args
     */publicstaticvoidmain(String[] args) 
    {
        permute("abc");
    }

}

输出

abc
acb
cab
cba
abc
acb 
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了[算法学习]Java实现字符串全排列,包括了方面的内容,希望对Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_302166.html

    相关图片

    相关文章