String Permutation
Problem
感觉和上面的题又有点像, 给一个string, 里面不能有数字。 然后所有的大写字母和非字母符号不能动, 其他的小写字母可以随意动。 输出所有的可能。
e.g. input Oh my-god!
output Om hd-goy! Oy hm-dog! 等等。。
Solution
1 public static List<String> permutate(String str) { 2 List<String> res = new ArrayList<String>(); 3 if(str == null || str.length() == 0) return res; 4 5 StringBuffer sb = new StringBuffer(str); 6 int[] idx = new int[str.length()]; 7 8 int low = 'a', high = 'z'; 9 int start = 0; 10 for(int i=0; i<str.length(); i++) { 11 if(str.charAt(i) <= high && str.charAt(i) >= low) { 12 idx[start] = i; 13 start++; 14 } 15 } 16 17 System.out.println(start); 18 19 boolean[] visited = new boolean[start]; 20 helper(str, res, sb, idx, visited, 0, start); 21 return res; 22 } 23 24 public static void helper(String str, List<String> res, StringBuffer sb, int[] idx, boolean[] visited, int pos, int end) { 25 if(pos == end) { 26 res.add(new StringBuffer(sb).toString()); 27 return; 28 } 29 30 for(int i=0; i<end; i++) { 31 if(visited[i] == false) { 32 visited[i] = true; 33 sb.setCharAt(idx[pos], str.charAt(idx[i])); 34 helper(str, res, sb, idx, visited, pos+1, end); 35 visited[i] = false; 36 } 37 } 38 }
转载于:https://www.cnblogs.com/superbo/p/4112093.html
String Permutation相关推荐
- leetcode :string字符串和数字
文章目录 01 第一个只出现一次的字符 02 左旋转字符串 03 字符串的排列 04表示数值的字符串 05把数字翻译成字符串 06 最长不含重复字符的子字符串 07 0-n-1中缺失的数字 08 数组 ...
- string类函数和牛客网剑指offer刷题记录
1.strcat char* strcat(char *strDest,const char *strSrc){assert(strDest && strSrc);char *p = ...
- 【java学习】String字符串
1,概念 1)String 不可变 不可变类:final,不可被继承. public final class String implements java.io.Serializable, Compa ...
- 剑指offer:面试题38. 字符串的排列
题目:面试题38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输 ...
- 剑指offer 28:字符串的排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 解题思路 参考 ...
- leetcode算法题--字符串的排列
原题链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/ vector<string> res; vector& ...
- 剑指offer 算法 (分解让复杂问题简单)
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 解析: 分三步: 第一步:cloneList(pHead);复制链表,每个节点后新 ...
- 剑指Offer之字符串的排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述 输入 ...
- 【剑指offer28:字符串的排列】【java】
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. import ja ...
- 剑指Offer——Java答案
第二章 面试需要的基础知识 数组 - 二维数组中查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...
最新文章
- CTFshow php特性 web110
- linux下编译wpa_supplicantnbsp;…
- Java方法重载与方法重写
- Qt Designer手册
- 错误: 句法分析器6行里不能有多字节字符_字节跳动iOS客户端面经第一期
- 【Java】java中 ==,equals,hashcode
- Delphi Access Violation错误的分析
- jQuery Validate 表单验证插件----在class属性中添加校验规则进行简单的校验
- linux内核启动后键盘不能用,编译linux-0.11内核后键盘不对的问题解决方法,比如/变成了-...
- 智能制造的灾备问题如何解决? | 凌云时刻
- 嵌入式工具 | 嵌入式开发常用几款的代码编辑器
- 自动控制——2、为什么用微分方程来表示线性定常系统
- 闹钟Android实验报告,单片机实验报告(闹钟).doc
- 良树机器人_揭开坑王高屋良树不为人知的一面,你看过这部《冥王计划》吗?...
- html5做在线课件,HTML5教程:制作移动教育课件
- 计算机无法识别移动硬盘怎么办,电脑识别不出来移动硬盘怎么办
- 拼车网源码php,拼车网源码-thinkphp PHP微信拼车源码 环境要求: 服务器系统:服务器系统 推荐Linux系统 - 下载 - 搜珍网...
- 优美的曲线(含蝴蝶线)-CoCube
- matlab bsxfun
- 从懵懂无知到独挡一面——那些萌新程序员的进阶之路
热门文章
- BEEF的搭建与使用
- 按位与、按位异或、按位取反
- mcafee 8.5i杀毒软件规则配置
- C#学校有近千名学生,在操作上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数。
- CDCAS: A Novel Cloud Data Center Security Auditing System
- cf. (E) Thematic Contests
- 《你的降落伞是什么颜色》
- 请用python写出奥运五环的绘图程序,20200929 008.海龟绘图_画出奥运五环图
- 10、返回当前审批流程图、后续审批按钮
- 20种简单美化照片PS技术