`
xglv2013
  • 浏览: 38092 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串全排列 java实现

阅读更多
package permStr;

public class PermStr
{
	public static final int SWITCH = 1; //是否去除重复的开关, 1表示去重, 0表示不去重, 默认为1
	private static boolean need_swap(StringBuilder str, int start, int i)
	{
		if(SWITCH == 0)
			return true;
		else
		{
			for(int j = start; j <= i - 1; j++)
			{
				if(str.charAt(j) == str.charAt(i))
					return false;
			}
			return true;
		}
	}
	public static void permStr(StringBuilder str, int start, int end)
	{
		if(start == end - 1)
		    System.out.println(str.toString());
		for(int i = start; i <= end - 1; i++)
		{
			if(need_swap(str, start, i)) 
			{
				swap(str, start, i);
				permStr(str, start + 1, end);
				swap(str, start, i);
			}
		}
	}
	
	private static void swap(StringBuilder str, int p, int q)
	{
		char temp = str.charAt(q);
		str.setCharAt(q, str.charAt(p));
		str.setCharAt(p, temp);
	}
	public static void main(String[] args)
	{
		StringBuilder str = new StringBuilder();
		str.append("abca");
		permStr(str, 0 , str.length());
	}
}
0
0
分享到:
评论

相关推荐

    Java_字符串全排列大全_(已解决重复问题)

    Java写的源码,解决各种字符串全排列问题,已解决重复问题,经过上机调试可直接运行

    Java实现字符数组全排列的方法

    下面我们将深入探讨如何使用Java实现字符数组的全排列。 首先,我们需要了解回溯法。回溯法是一种试探性的解决问题方法,它尝试逐步找到问题的所有解。当发现某一步无法继续找到有效解时,会退回一步,尝试其他的...

    java实现字符串的全排列

    "java实现字符串的全排列" java实现字符串的全排列是指通过编程语言java来生成一个字符串的所有可能排列。例如输入字符串abc,则输出所有可能的排列组合:abc,acb,bac,bca,cab和cba。 在java中,实现字符串的...

    生成字符串的全排列,可以用回溯法实现

    而JavaScript是一种广泛使用的客户端脚本语言,常用于网页交互和数据验证,与回溯法实现字符串全排列不直接相关,但它们都是前端开发中的基础工具,开发者在学习和实践中可能会同时接触到这些技术。 总的来说,通过...

    Java递归实现字符串全排列与全组合

    "Java递归实现字符串全排列与全组合" Java递归实现字符串全排列与全组合是指使用Java语言通过递归算法实现字符串的全排列和全组合。全排列是指将字符串中的所有元素按照一定的顺序进行排列,而全组合是指将字符串...

    输入一个字符串,输出所有该字符串的组合情况

    - `TestPermute.java`:可能实现了字符串的全排列算法,并命名为`permute`方法。 - `Test2.java`:可能是对另一种算法的实现,比如改进或优化过的版本。 - `Test.java`:通常用于编写单元测试,检验各种输入情况下,...

    输出n个字符的全排列(没有重复字符)

    简单的实现,代码很短。...输入一个字符串,输出它的字符的所有组合的情况 如输入“abc”,则输出abc,acb,bac,bca,cab,cba。 但如果输入“aba”,即有重复的,也会输出aba,aab,baa,baa,aba,aab。

    java递归实现N个数全排列输出

    在编程领域,全排列是一个经典的算法问题,它涉及到数组或字符串的所有可能的顺序组合。当给定一个包含N个不同元素的集合时,全排列就是要列出所有可能的N!(N的阶乘)种排列方式。在这个场景中,我们将探讨如何使用...

    重复元素全排列

    在Java中实现重复元素全排列,通常采用递归的方法。核心思想是通过交换元素的位置来生成不同的排列组合,并检查每次交换是否产生了一个新的、未被记录的排列。为了避免重复计算,可以使用一个辅助函数`Judge()`来...

    Java实现abc字符串排列组合

    本文将详细介绍Java实现abc字符串的排列组合,主要包括可重复排列、全排列和组合三个部分。 可重复排列 在Java中,可以使用递归来实现abc字符串的可重复排列。可重复排列是指从abc三个字符中选择字符,组成长度为3...

    全排列的Hash函数(JAVA)

    - 或者,将排列的每个元素转换为字符串,然后拼接成一个大字符串,再调用`String.hashCode()`。 3. **处理当前排列**: - 在`processCurrentPermutation`函数中,可以使用自定义的Hash函数将当前排列转换为一个键...

    Burrows-Wheeler压缩算法JAVA实现

    4. **Java实现**: - Java中实现BWT,可以使用`Collections.sort()`函数来排序字符数组,实现全排列和排序的过程。 - 为了存储和处理全排列,可以使用`ArrayList`或自定义的`Matrix`类来保存旋转字符串。 - 可以...

    java 和 c# 不同的7个方法 实现 ABCD 全排列

    在Java和C#中,我们可以创建一个数组或字符串来保存当前排列,然后递归地尝试将剩余的字符插入到所有可能的位置,如果满足条件则继续,否则回溯。这种方法直观且易于理解,但可能会导致大量的重复计算。 2. **深度...

    java算法,经典面试必备

    在提供的代码中,可以看到两种实现字符串全排列的方法。它们都是通过递归的方式来生成所有可能的字符组合。核心逻辑是遍历基础字符串(base),在每次迭代中删除一个字符,并将这个字符添加到当前临时结果(buff)...

    精心搜集整理:2014年前蓝桥杯Java竞赛历年试题及详尽答案

    字符串格式化技巧:本题旨在锻炼字符串操作能力,要求实现特定格式调整,涵盖首字母大写、数字字母间插入下划线及空白字符的规范处理。通过逐字符遍历与状态判断,实现复杂字符串格式的自动修正。此题不仅考验对字符...

    彻底理解全排列算法

    全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。

    最新JAVA编程题全集_50题及答案2

    第一部分代码实现了一个全排列算法,它遍历输入字符串中的每个字符,并递归地删除已使用过的字符,形成新的字符串基础,然后将当前字符添加到已构建的组合中。这种方法称为回溯法,用于生成所有可能的字符串组合。...

    JAVA面试编程题.pdf

    1. 字符串全排列: 这个题目是要求实现一个函数,生成给定字符串所有可能的排列组合。这里使用了递归算法,通过删除字符串中的一个字符并将其添加到当前缓冲区,然后对剩余部分进行相同的操作,最终得到所有排列。...

    蓝桥杯java历年真题

    Java 实现串处理可以使用 String 类的相关方法,例如 toUpperCase() 方法将字符串转换为大写,split() 方法将字符串分割成多个子串,trim() 方法将字符串两端的空格去除。 3. 递归算法 递归算法是指函数调用自身的...

    java面试题目

    3. **全排列问题**:对于字符串数组的全排列,可以采用回溯算法或者动态规划来解决,涉及到数组操作和递归。 4. **JavaScript编程**:在浏览器中显示当前星期,可以用JavaScript的Date对象获取日期,然后处理输出。...

Global site tag (gtag.js) - Google Analytics