1.字符排序
算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。 package Question1_9; import java.util.Scanner; import java.util.Vector;
public class Question1 { }
public static long count=0;
private void fullPermutation(Vector
} }
for (int i = 0; i < sourse.size(); i++) {
Vector
new Question1().fullPermutation(tsourse, tresult); for (int i = 0; i < result.size(); i++) { }
System.out.print(\count++; return;
System.out.print(result.elementAt(i));
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); }
int n=scanner.nextInt();
Vector
new Question1().fullPermutation(sourse, result); System.out.println(Question1.count);
方法二:
import java.util.ArrayList; import java.util.Iterator;
import java.util.LinkedHashSet;
1
import java.util.List; import java.util.Scanner; import java.util.Set;
public class Demo03 {
// 去掉重复元素,放入lis
public static void removeDuplicate(String s,Set
// 为方便操作 将 sets 转 lis
public static void convert(List
// 检测符合条件的元素组合
public static void check(Set for(int j=i+1;j+1 System.out.println(sb); // 输出组合 sb.setLength(0); // 清空 } } } } public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println(\输入串(不大于30个字符)。\ String s = scan.nextLine(); Set 运行结果: 2 输入串(不大于30个字符)。 abcd abc abd acd bcd 2.串的简单处理 串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。 本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. 把单词中间有多个空格的调整为1个空格。 例如: 用户输入: you and me what cpp2005program 则程序输出: You And Me What Cpp_2005_program 用户输入: this is a 99cat 则程序输出: This Is A 99_cat 我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。 每个单词间由1个或多个空格分隔。 假设用户输入的串长度不超过200个字符。 package Question1_9; import java.util.Scanner; import java.util.Vector; public class Question2 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String string=scanner.nextLine(); Vector while (index if(index==0&&vector.elementAt(index)>='a'&&vector.elementAt(index)<='z'){ vector.set(index, (char)(vector.elementAt(index)-('a'-'A'))); }else if(vector.elementAt(index-1)==' '&&vector.elementAt(index)==' '){ vector.remove(index); 3 index--; }else if (vector.elementAt(index-1)==' '&&(vector.elementAt(index)>='a'&&vector.elementAt(index)<='z')) { vector.set(index, (char)(vector.elementAt(index)-('a'-'A'))); }else if((vector.elementAt(index)>='a'&&vector.elementAt(index)<='z')&&(vector.elementAt(index-1)>='0'&&vector.elementAt(index-1)<='9')){ vector.add(index, '_'); index++; }else if((vector.elementAt(index-1)>='a'&&vector.elementAt(index-1)<='z')&&(vector.elementAt(index)>='0'&&vector.elementAt(index)<='9')){ } } } index++; vector.add(index, '_'); index++; } for (int i = 0; i System.out.println(); // TODO: handle exception } catch (ArrayIndexOutOfBoundsException e) { } 运行结果: you and me what cpp2005program You And Me What Cpp_2005_program 方法二: import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * 本题目即是要求程序对用户输入的串进行处理。具体规则如下: *1. 把每个单词的首字母变为大写。 *2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 *3. 把单词中间有多个空格的调整为1个空格。 *我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。 *假设用户输入的串长度不超过200个字符。 */ public class SimpleString { public static void main(String args[]){ String str=\ str=(new Scanner(System.in)).nextLine(); 4 } } String []str1=str.split(\ for(int i=0;i for(int i=0;i s+=str1[str1.length-1]; Pattern p=Pattern.compile(\ Matcher m=p.matcher(s); String fin=\ int st=0; while(m.find()){ int start=m.start(); } if(st int end=m.end(); fin+=s.substring(st,start); if(s.charAt(start-1)!=' ')fin+=\fin+=m.group(1); if(s.charAt(end)!=' ')fin+=\st=end; s+=str1[i]+\ 方法三: import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo02 { public static void print(String[] s){ for(int i=0;i System.out.println(s[s.length-1]); } public static void main(String[] args) { Scanner scan = new Scanner(System.in); String s = scan.nextLine(); String[] ss = s.split(\ for(int i=0;i String up = (\大写 StringBuffer sb = new StringBuffer(ss[i]); ss[i] = sb.replace(0, 1, up).toString(); Matcher m = Pattern.compile(\ 5