字符串或者数字数组全排列


//字符串全排列

package com.demo.acm;

public class AllSortChar {

public static void allSort(char[] buf,int start,int end){
if(start==end){
for(int i=0;i<=end;i++){
System.out.print(buf[i]);
}
System.out.println();
}else{
//多个字母全排列
for(int i=start;i<=end;i++){
char tmp=buf[start];//交换数组的第一个元素与后续的元素
buf[start]=buf[i];
buf[i]=tmp;
allSort(buf,start+1,end);//后续元素递归全排列
tmp=buf[start];//将交换后的数组还原
buf[start]=buf[i];
buf[i]=tmp;
}
}
}
public static void main(String[] args){
String test="abcd";
char[] chars=test.toCharArray();
allSort(chars, 0, chars.length-1);
}
}


//没有重复元素的排列
public class Solution {
public ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();

if (null == num || num.length == 0)
return result;
int length = num.length;
if (length == 1) {
ArrayList<Integer> tmp = new ArrayList<Integer>();
tmp.add(num[0]);
result.add(tmp);
return result;
}
ArrayList<Integer> arrayList = null;
allPermutations(num, result,arrayList);
return result;
}
private void allPermutations(int[] num,
ArrayList<ArrayList<Integer>> result, ArrayList<Integer> arrayList) {
// TODO Auto-generated method stub
Arrays.sort(num);
int length = num.length;
int tmp;
while(true){
arrayList=new ArrayList<Integer>();
for(int i=0;i<length;i++)
arrayList.add(num[i]);
result.add(arrayList);
int i;
for(i=length-1;i>0;i--){
if(num[i]>num[i-1]){
break;
}
}
if(i<=0)
break;
int k;
for(k=i;k<length;k++){
if(k==length-1){
break;
}
if(num[k]>num[i-1]&&num[k+1]<num[i-1]){
break;
}
}
tmp=num[i-1];
num[i-1]=num[k];
num[k]=tmp;
sortArrays(num, i, length-1);
}
}
private void sortArrays(int[] num,int i,int j){
int beg=i;
int end=j;
int tmp;
while(beg<end){
tmp=num[beg];
num[beg]=num[end];
num[end]=tmp;
beg++;
end--;
}
}

字符串或者数字数组全排列,布布扣,bubuko.com

时间: 2025-01-15 15:44:57

字符串或者数字数组全排列的相关文章

字符串和数字的全排列问题、前i位被i整除问题

// 全排列问题.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; template<class T> void swap(T *str1,T *str2) { T temp; temp=*str1; *str1=*str2; *str2=temp; } void permStr(char *str,int i)//字符串的全排列 { //pr

jsoncpp封装和解析字符串、数字、布尔值和数组

使用jsoncpp进行字符串.数字.布尔值和数组的封装与解析. 1)下载jsoncpp的代码库 百度网盘地址 :http://pan.baidu.com/s/1ntqQhIT 2)解压缩文件 jsoncpp.rar unzip jsoncpp.rar 3)修改jsoncpp/src/main.cpp文件 vim src/main.cpp 1 #include <string> 2 #include <json/json.h> 3 #include "stdio.h&quo

Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组

功能如题目. 在串口收到逗号分割的6串数字比如 100,200,45,4,87,99 然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值 代码注释很详细了,就不再说明了. ARDUINO 代码复制打印 //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;

[Arduino] 在串口读取多个字符串,并且转换为数字数组

功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; void setup() { //定义

将字符串拆成数组,过滤字符串

/**     * 将字符串拆成数组     * @param string $string:字符串     * @return 返回拆成的数组     */    function mbStringToArray ($string) {        $string = $this->getChinaEnglishNumString($string);        $array = array();        $strlen = mb_strlen($string);        wh

字符串和字符数组

  1.字符串 严格意义上来说,C语言并没有字符串原生的字符串的类型,而是通过字符指针来实现的:char *p = "LINUX";.而对于其他的高级语言来说,比如C++的就存在字符串类型: string p1 = "I LOVE LINUX"; . 字符串在内存中其实就多个字节组成的,且地址都是连续的:指针指向字符串的的头部:字符串的结尾是以"\0"(是真能整的零)作为字符串结束的标志. "\0" 的理解: \0 是一个 A

C语言 字符串和数字转换函数

atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回.参数nptr字符串可包含正负号.小数点或E(e)来表示指数部分,如123.456或123e-2.

C/C++中字符串与数字之间的转换

主要有两种方式:C 中能够使用 sprintf 将数字转为字符数组,sscanf 将字符数组转为数字:而在 C++ 中不仅能够使用 C 中的方法,还能够使用 stringstream 实现字符串与数字间的转换. #include "iostream" #include "string" #include "sstream" #include "cstdio" using namespace std; string num2st

ie6 报“缺少标识符、字符串或数字”错误总结

1.json数组最后一条不可有逗号,firefox,chrome,ie9有没有逗号都是没问题的; 2.缺少函数,可能是你的函数名称写错,或是函数有错; 3.引用的js文件编码问题,页面是utf8的,但是引用的js是gbk也可能会出现此问题. 比如我的问题: ie6 报"缺少标识符.字符串或数字"错误总结