问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

字符串排列

发布网友 发布时间:2022-04-23 23:08

我来回答

4个回答

热心网友 时间:2023-10-13 03:39

/**
* @author Stephen Wu
*
*/
public class Du {

public static void main(String[] args) {
displayPermutation("abc");

System.out.println("------------------------------------\n\n");
displayPermutation("abcd");
}

public static void displayPermutation(String s) {
displayPermutation(" ", s);
}

public static void displayPermutation(String s1, String s2) {
if (s2.trim().equals("")) {
System.out.println(s1.trim());
} else {
StringBuilder sb = null;
for (int i = 0; i < s2.length(); i++) {
sb = new StringBuilder(s2);
String first = s1 + sb.substring(i, i + 1);
displayPermutation(first, sb.deleteCharAt(i).toString());
}
}
}

}
---------------------Testing
abc
acb
bac
bca
cab
cba
------------------------------------

abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba

热心网友 时间:2023-10-13 03:39

能实现全排列,还能实现其它排列,比如4选3,7选5等等。

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

public class TT {
public static void main(String[] args) {
FullSort full = new FullSort();
full.displayPermutation("abc");
for(String s: full.result){
System.out.println(s);
}
}

static class FullSort {

List<String> result = new ArrayList<String>();

public void displayPermutation(String datas) {
displayPermutation(datas,"",datas.length());
}

public void displayPermutation(String datas, String target) {
displayPermutation(datas,"",datas.length());
}
/**
* 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
*
* @param datas
* @param target
*/
public void displayPermutation(String datas, String target, int picked) {
if (target.length() == picked) {
result.add(target);
return;
}
for (int i = 0; i < datas.length(); i++) {
String newTarget = target + datas.charAt(i);
String newDatas = datas.substring(0, i)
+ datas.substring(i + 1);
displayPermutation(newDatas, newTarget, picked);
}
}
}
}

热心网友 时间:2023-10-13 03:40

//////////////////////////////
// 动态链表字符串排序
//
//功能介绍:输入10个字符串,按ASCII排序输出。
// 再输入第11个字符串,11个字符串排序输出。
// 第12、13...依此类推
/////////////////////////////////////////////////////
#include<stdio.h>
#include<string.h>
#include<malloc.h>

#define N 21 //字符串长度

struct node
{
char str[N];
struct node *next;
};

void print( struct node *p ); //函数定义
void sort( struct node *p );
void swap( struct node *s1, struct node *s2 );

void main( )
{
struct node *head=NULL, *p, *p1;
char a[N];
int num = 0; //字符串个数标记
printf( "输入10个字符串,回车换行:\n" );
while( num<10 )
{
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
if( head == NULL )
{
head = p;
p1 = p;
}
else
{
p1->next = p;
p1 = p;
}
num = num + 1;
}
p->next = NULL;
sort( head ); //字符串比较排序
print( head ); //输出打印字符串

while( 1 ) //死循环
{
printf( "输入字符串: " );
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
p1->next = p;
p1 = p;
p->next = NULL;
sort( head );
print( head );
}
}

void sort( struct node *p ) //字符串比较排序
{
struct node *p1, *p2;
p1 = p;
while( p1 != NULL )
{
p2 = p1->next;
while( p2 != NULL )
{
if( strcmp( (p1->str),(p2->str) ) > 0 )
{
swap( p1,p2 ); //字符串交换
}
p2 = p2->next;
}
p1 = p1->next;
}
}

void swap( struct node *s1, struct node *s2 ) //字符串交换
{
struct node temp1,temp2;
temp1 = *s1;
temp1.next = s2->next;
temp2 = *s2;
temp2.next = s1->next;
*s1 = temp2;
*s2 = temp1;
}

void print( struct node *p ) //字符串输出
{
printf( "\n" );
while( p !=NULL )
{
puts( p->str );
p = p->next;
}
printf( "\n" );
}

热心网友 时间:2023-10-13 03:40

//////////////////////////////
// 动态链表字符串排序
//
//功能介绍:输入10个字符串,按ASCII排序输出。
// 再输入第11个字符串,11个字符串排序输出。
// 第12、13...依此类推
/////////////////////////////////////////////////////
#include<stdio.h>
#include<string.h>
#include<malloc.h>

#define N 21 //字符串长度

struct node
{
char str[N];
struct node *next;
};

void print( struct node *p ); //函数定义
void sort( struct node *p );
void swap( struct node *s1, struct node *s2 );

void main( )
{
struct node *head=NULL, *p, *p1;
char a[N];
int num = 0; //字符串个数标记
printf( "输入10个字符串,回车换行:\n" );
while( num<10 )
{
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
if( head == NULL )
{
head = p;
p1 = p;
}
else
{
p1->next = p;
p1 = p;
}
num = num + 1;
}
p->next = NULL;
sort( head ); //字符串比较排序
print( head ); //输出打印字符串

while( 1 ) //死循环
{
printf( "输入字符串: " );
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
p1->next = p;
p1 = p;
p->next = NULL;
sort( head );
print( head );
}
}

void sort( struct node *p ) //字符串比较排序
{
struct node *p1, *p2;
p1 = p;
while( p1 != NULL )
{
p2 = p1->next;
while( p2 != NULL )
{
if( strcmp( (p1->str),(p2->str) ) > 0 )
{
swap( p1,p2 ); //字符串交换
}
p2 = p2->next;
}
p1 = p1->next;
}
}

void swap( struct node *s1, struct node *s2 ) //字符串交换
{
struct node temp1,temp2;
temp1 = *s1;
temp1.next = s2->next;
temp2 = *s2;
temp2.next = s1->next;
*s1 = temp2;
*s2 = temp1;
}

void print( struct node *p ) //字符串输出
{
printf( "\n" );
while( p !=NULL )
{
puts( p->str );
p = p->next;
}
printf( "\n" );
}
另外,站长团上有产品团购,便宜有保证
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
arrive in和arrive at 有什么区别? 磁力泵为什么可空转? 为什么不让衬氟塑料磁力泵空转?怎样提升设备稳定性? 工业软管泵 塑料磁力泵为什么不能空转 求推荐男主和女配在一起的小说? 《红衣天下》txt全集下载 检测公司检测哪些 检测公司是怎么样的 检测公司属于什么企业 java:字符串排序问题 C语言,字符串排序问题。。 Excel字符串排序 字符排序 按照指定的字符顺序进行字符串排序 字符串排序 C语言编程 c语言字符串排序 C语言中 字符串怎么排序 然后对这些字符串排序,该怎么做 如何给字符串排序? C语言中如何将10个字符串进行排序 电话是1876年由?发明的 求详细解答:1876年,贝尔发明了电 历史上第一个电器是什么? 电灯泡是谁在哪一年发明的? 电报电话分别是谁发明的? 爱迪生发明电的事例 爱迪生在什么时候发明了什么东西? 电是由谁发明的? 1876年发明的是电话还是电灯?? java中怎么对一串字符进行排序! 字符串排序(使用动态链表)先悬赏100分,满意另加分 C语言 字符串排序的规则是什么?就是字符串排序是什么意思? OPPOR11s与荣耀v10哪个好? OPPOR11s与荣耀 v10对比? oppor11s与荣耀V10比较哪个拍照效果好 华为荣耀9和OPPO R11s有什么区别 OPPOR11s与荣耀v10对比? OPPO R11s与荣耀 v10哪个好? oppor11s好还是荣耀8x好? oppor11s和华为荣耀v10哪个性能好 OPPOr11s和荣耀10v哪个比较好 OPPOR11s和荣耀V9哪个好 OPPO R11s与荣耀v10参数对比? OPPOR11s与荣耀v10参数对比? OPPOR11s与荣耀v10区别? 华为荣耀play和oppor11s哪个续航好 oppor11s和华为荣耀9哪款好 oppor11s和华为nova2s以及荣耀v10,哪个手机更值得购买? OPPO R11s Plus和荣耀8哪个好?