当前位置: 首页 > news >正文

字符串全排列(Java版本自己用)

 我面试的时候写的版本(运行为空 存在Bug)

import java.util.Scanner;
import java.util.*;
public class Main {public static void main(String[] args) {String s="abc";char[] str=s.toCharArray();String[] ss=new String[str.length];for(int i=0;i<str.length;i++){ss[i]=String.valueOf(str[i]);}List<List<String>> result=new ArrayList<>();result=per(ss);System.out.println(result);}public static List<List<String>> per(String[] s){int len=s.length;List<List<String>> res=new ArrayList<>();if(len==0){return res;}boolean[] used=new boolean[len];List<String> path=new ArrayList<>();dfs(s,len,0,path,used,res);return res;}public static void dfs(String[] s,int len,int depth,List<String> path,boolean[] used,List<List<String>> res){if(depth==len){res.add(path);return;}for(int i=0;i<len;i++){if(!used[i]){path.add(s[i]);used[i]=true;dfs(s,len,depth+1,path,used,res);used[i]=false;path.remove(path.size()-1);}}}
}

修改后正确的:

import java.util.*;
public class Main {public static void main(String[] args) {String s="abc";char[] str=s.toCharArray();String[] ss=new String[str.length];for(int i=0;i<str.length;i++){ss[i]=String.valueOf(str[i]);}List<List<String>> result = new ArrayList<>();result = per(ss);System.out.println(result);}public static List<List<String>> per(String[] s){int len = s.length;List<List<String>> res = new ArrayList<>();if(len == 0){return res;}boolean[] used = new boolean[len];List<String> path = new ArrayList<>();dfs(s, len, 0, path, used, res);return res;}public static void dfs(String[] s, int len, int depth, List<String> path, boolean[] used, List<List<String>> res){if(depth == len){res.add(new ArrayList<>(path));return;}for(int i = 0; i < len; i++){if(!used[i]){path.add(s[i]);used[i] = true;dfs(s, len, depth + 1, path, used, res);used[i] = false;path.remove(path.size() - 1);}}}
}

相关文章:

  • 随机数算法原理以及模拟实现
  • 如何高效的进行生产管理?
  • UnityDots学习(四)
  • 使用java实现设计图中多个设备的自动布线,根据如下要求生成详细设计方案文档
  • 前沿分享|技术雷达202504月刊精华
  • LINUX网络基础 [六] - HTTPS协议
  • Gboard安卓版手势输入与多语言支持全面评测【输入顺滑】
  • Redis—内存淘汰策略
  • 09.传输层协议 ——— TCP协议
  • 在 NVIDIA Orin (JetPack 6.0) 上安装 PyTorch 2.4 + Torchvision 0.19
  • App爬虫工具篇-mitmproxy
  • GpuGeek:以弹性算力与全栈服务赋能产业智能升级
  • 关于团结引擎打包、或者项目出错并且崩溃
  • Linux中查询进程服务,通过端口方式关闭
  • MySQL中根据binlog日志进行恢复
  • TCP三次握手与四次挥手面试回答版本
  • 【Linux】用户权限
  • PostgreSQL 常用日志
  • Python数据分析与机器学习实战:从数据到洞察的完整路径
  • Java中常见API的分类概述及示例
  • 新闻1+1丨“龟速”行驶要治理,还要治什么?
  • 前瞻2025丨无糖茶,站在转折点?
  • “75后”遂宁市长刘会英调任四川省人社厅党组副书记
  • 山西一国道塌陷致2死后续:地质雷达检测出10处道路病害
  • 在因关税战爆火的敦煌网上,美国人爱买什么中国商品
  • 国家卫健委:无资质机构严禁开展产前筛查