当前位置: 首页 > 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);}}}
}

http://www.xdnf.cn/news/87751.html

相关文章:

  • SpringBoot3集成MyBatis-Plus(解决Boot2升级Boot3)
  • MQ底层原理
  • AI代表企业签订的合同是否具有法律效力?
  • 第一章-语言基础\2.竞赛常用库函数\其他库函数
  • AXOP33552: 400MHz 高速双通道运算放大器
  • 《AI大模型应知应会100篇》 第33篇:大模型在法律文档处理中的应用
  • 第T9周:猫狗识别2
  • MySQL中根据binlog日志进行恢复
  • SAS宏调试:高效定位与解决典型问题
  • 德施曼重磅发布五大突破性技术及多款重磅新品,开启AI智能管家时代
  • 使用 rebase 轻松管理主干分支
  • 【Linux】静态库 动态库
  • ZLG嵌入式笔记 | 拯救NAND/eMMC:延长闪存寿命
  • OpenCv高阶(七)——图像拼接
  • 高级java每日一道面试题-2025年4月22日-基础篇[反射篇]-如何通过反射创建一个对象实例?
  • Redi的常见场景
  • Agent框架LangGraph:实现一个简单的Plan-and-Execute Agent
  • 使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索
  • xyz 瓦片leaflet地图组件 显示
  • 软考-高项,知识点一览十九 配置和变更管理
  • 低代码破局,助力工业互联网平台迈向智改数转新高地
  • 电脑硬盘丢失怎么找回?解决硬盘数据恢复的2种方法
  • XHTMLConverter把docx转换html报java.lang.NullPointerException异常
  • 【YOLOv8-pose部署至RK3588】模型训练→转换RKNN→开发板部署
  • Mujoco xml < sensor>
  • 转型探讨:未来投资与布局
  • ARP(地址解析协议)
  • 高效UI组件库Kendo UI——赋能企业级Web应用开发
  • 25、简述.NET程序集(Assembly)
  • 基于javaweb的SpringBoot校园失物招领系统设计与实现(源码+文档+部署讲解)