Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_java
提交
7e939c7c
S
skill_tree_java
项目概览
CSDN 技术社区
/
skill_tree_java
通知
43
Star
8
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7e939c7c
编写于
11月 25, 2021
作者:
M
Mars Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add permutation
上级
be39881b
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
217 addition
and
1 deletion
+217
-1
data/1.Java初阶/9.控制执行流程/5.函数/config.json
data/1.Java初阶/9.控制执行流程/5.函数/config.json
+3
-1
data/1.Java初阶/9.控制执行流程/5.函数/permutation.json
data/1.Java初阶/9.控制执行流程/5.函数/permutation.json
+8
-0
data/1.Java初阶/9.控制执行流程/5.函数/permutation.md
data/1.Java初阶/9.控制执行流程/5.函数/permutation.md
+206
-0
未找到文件。
data/1.Java初阶/9.控制执行流程/5.函数/config.json
浏览文件 @
7e939c7c
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
"children"
:
[],
"children"
:
[],
"export"
:
[
"export"
:
[
"call.json"
,
"call.json"
,
"parser.json"
"parser.json"
,
"permutation.json"
]
]
}
}
\ No newline at end of file
data/1.Java初阶/9.控制执行流程/5.函数/permutation.json
0 → 100644
浏览文件 @
7e939c7c
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"permutation.md"
,
"notebook_enable"
:
false
,
"exercise_id"
:
"a52d29ac72cf48669824894ba7f7427a"
}
\ No newline at end of file
data/1.Java初阶/9.控制执行流程/5.函数/permutation.md
0 → 100644
浏览文件 @
7e939c7c
# 排列
给定一个几十个字符内的短字符串,简单起见我们假设这个字符串没有重复字符,那么生成其全排列的代码是:
## 答案
```
java
package
net.csdn
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Main
{
public
static
String
drop
(
String
token
,
int
idx
){
if
(
idx
==
0
){
return
token
.
substring
(
1
);
}
if
(
idx
>=
token
.
length
()-
1
){
return
token
.
substring
(
0
,
idx
);
}
return
token
.
substring
(
0
,
idx
)
+
token
.
substring
(
idx
+
1
);
}
public
static
List
<
String
>
permutation
(
String
token
){
if
(
token
.
length
()
<
2
){
return
List
.
of
(
token
);
}
if
(
token
.
length
()==
2
){
String
item
=
token
.
charAt
(
1
)
+
String
.
valueOf
(
token
.
charAt
(
0
));
return
List
.
of
(
token
,
item
);
}
List
<
String
>
result
=
new
ArrayList
<>();
for
(
int
idx
=
0
;
idx
<
token
.
length
();
idx
++){
char
chr
=
token
.
charAt
(
idx
);
String
next
=
drop
(
token
,
idx
);
for
(
var
rest:
permutation
(
next
)){
result
.
add
(
chr
+
rest
);
}
}
return
result
;
}
public
static
void
main
(
String
[]
args
)
{
String
token
=
args
[
0
];
for
(
var
item:
permutation
(
token
)){
System
.
out
.
println
(
item
);
}
}
}
```
## 选项
### 方法定义不对
```
java
package
net.csdn
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Main
{
public
String
drop
(
String
token
,
int
idx
)
{
if
(
idx
==
0
)
{
return
token
.
substring
(
1
);
}
if
(
idx
>=
token
.
length
()
-
1
)
{
return
token
.
substring
(
0
,
idx
);
}
return
token
.
substring
(
0
,
idx
)
+
token
.
substring
(
idx
+
1
);
}
public
List
<
String
>
permutation
(
String
token
)
{
if
(
token
.
length
()
<
2
)
{
return
List
.
of
(
token
);
}
if
(
token
.
length
()
==
2
)
{
String
item
=
token
.
charAt
(
1
)
+
String
.
valueOf
(
token
.
charAt
(
0
));
return
List
.
of
(
token
,
item
);
}
List
<
String
>
result
=
new
ArrayList
<>();
for
(
int
idx
=
0
;
idx
<
token
.
length
();
idx
++)
{
char
chr
=
token
.
charAt
(
idx
);
String
next
=
drop
(
token
,
idx
);
for
(
var
rest
:
permutation
(
next
))
{
result
.
add
(
chr
+
rest
);
}
}
return
result
;
}
public
static
void
main
(
String
[]
args
)
{
String
token
=
args
[
0
];
for
(
var
item
:
permutation
(
token
))
{
System
.
out
.
println
(
item
);
}
}
}
```
### 方法引用不对
```
java
package
net.csdn
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Main
{
public
static
String
drop
(
String
token
,
int
idx
){
if
(
idx
==
0
){
return
token
.
substring
(
1
);
}
if
(
idx
>=
token
.
length
()-
1
){
return
token
.
substring
(
0
,
idx
);
}
return
token
.
substring
(
0
,
idx
)
+
token
.
substring
(
idx
+
1
);
}
public
static
List
<
String
>
permutation
(
String
token
){
if
(
token
.
length
()
<
2
){
return
List
.
of
(
token
);
}
if
(
token
.
length
()==
2
){
String
item
=
token
.
charAt
(
1
)
+
String
.
valueOf
(
token
.
charAt
(
0
));
return
List
.
of
(
token
,
item
);
}
List
<
String
>
result
=
new
ArrayList
<>();
for
(
int
idx
=
0
;
idx
<
token
.
length
();
idx
++){
char
chr
=
token
.
charAt
(
idx
);
String
next
=
drop
(
token
,
idx
);
for
(
var
rest:
permutation
(
next
)){
result
.
add
(
chr
+
rest
);
}
}
return
result
;
}
public
static
void
main
(
String
[]
args
)
{
String
token
=
args
[
0
];
for
(
var
item:
this
.
permutation
(
token
)){
System
.
out
.
println
(
item
);
}
}
}
```
### 方法定义不对
```
java
package
net.csdn
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Main
{
String
drop
(
String
token
,
int
idx
){
if
(
idx
==
0
){
return
token
.
substring
(
1
);
}
if
(
idx
>=
token
.
length
()-
1
){
return
token
.
substring
(
0
,
idx
);
}
return
token
.
substring
(
0
,
idx
)
+
token
.
substring
(
idx
+
1
);
}
List
<
String
>
permutation
(
String
token
){
if
(
token
.
length
()
<
2
){
return
List
.
of
(
token
);
}
if
(
token
.
length
()==
2
){
String
item
=
token
.
charAt
(
1
)
+
String
.
valueOf
(
token
.
charAt
(
0
));
return
List
.
of
(
token
,
item
);
}
List
<
String
>
result
=
new
ArrayList
<>();
for
(
int
idx
=
0
;
idx
<
token
.
length
();
idx
++){
char
chr
=
token
.
charAt
(
idx
);
String
next
=
drop
(
token
,
idx
);
for
(
var
rest:
permutation
(
next
)){
result
.
add
(
chr
+
rest
);
}
}
return
result
;
}
public
static
void
main
(
String
[]
args
)
{
String
token
=
args
[
0
];
for
(
var
item:
permutation
(
token
)){
System
.
out
.
println
(
item
);
}
}
}
```
### D
全都是错的,Java 函数不能递归调用
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录