Java实现字符串的全排列
2014-09-01 21:13
218 查看
package com.leetcode; import java.util.ArrayList; public class Permutation { public static void main(String[] args) { ArrayList<String> res = perms2("abc"); System.out.println(res); } //法一: public static ArrayList<String> perms1(String s){ ArrayList<String> res = new ArrayList<String>(); if(s == null) return null; if(s.isEmpty()){ res.add(""); return res; } for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); String start = s.substring(0, i); String end = s.substring(i + 1); ArrayList<String> words = perms1(start + end); for(String word : words){ String newStr = c + word; res.add(newStr); } } return res; } //法二: public static ArrayList<String> perms2(String s){ ArrayList<String> res = new ArrayList<String>(); if(s == null) return null; if(s.isEmpty()){ res.add(""); return res; } char c = s.charAt(0); String reminder = s.substring(1); ArrayList<String> words = perms2(reminder); for(String word : words){ for(int i = 0; i <= word.length(); i++){ String newStr = insertCharAt(word, c, i); res.add(newStr); } } return res; } public static String insertCharAt(String s, char c, int i){ String start = s.substring(0, i); String end = s.substring(i); return start + c + end; } }
相关文章推荐
- 打印 全排列 字符串或整型 Java实现
- Java下实现无重字符串的全排列(递归和回溯方法)
- 剑指offer----字符串的全排列----java实现
- java实现字符串的全排列
- Java技巧——实现Comparator接口来进行字符串逆向排序
- Java数字转字符串前面自动补0的实现
- 繁简体(GBBig5)字符串转化的JAVA方式实现
- 用Java实现按字节长度截取字符串的方法
- JAVA如何实现字符串的颠倒
- Java数字转字符串前面自动补0的实现
- java 实现字符串全角转半角、半角到全角的转换
- Java实现字符串如aaa,aab,...,zzz的遍历输出
- 第2章 Java编程基础——FAQ2.20 “+”操作符在Java内部是如何实现字符串连接的?
- 用oracle的java存储过程实现BLOB字段的字符串读取
- 用oracle的java存储过程实现BLOB字段的字符串读取
- java 面试题:不用库函数实现字符串逆序
- Java里面通过正则表达式来实现字符串替换
- 繁简体(GBBig5)字符串转化的JAVA方式实现
- 基础:Java里数字转字符串前面自动补0的实现
- 用Java实现按字节长度截取中英文数字字符串的方法总结