蓝桥杯.取字符(去掉重复的使用set list实现)

题目描述:

从键盘读入一个由字母构成的串(不大于30个字符)。

从该串中取出3个不重复的字符,求所有的取法。

取出的字符,要求按字母升序排列成一个串。

不同的取法输出顺序可以不考虑。

例如:

输入:

abc

则输出:

abc

输入:

abcd

则输出:

abc

abd

acd

bcd

输入:

abcaa

则输出:

abc

package ccf;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class GetThree_nNoRepeat_From_String {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		String string = s.next();
		printABC(getCharSet(string));
	}
	public static Set<Character> getCharSet(String s){
		//因为set集合的无重复性以及linedHashSet的存放有序性
		//这里是为了保证添加顺序的有序性:如a,b,c得到的集合为[a,b,c].如果使用hashSet结果为[b,a,c]不能保证存放的有序
		Set<Character> charSet=new LinkedHashSet<Character>();
		for(int i=0;i<s.length();i++){
			charSet.add(s.charAt(i));//把字符串转化为字符存放到set集合中,set集合中存放不重复
		}
		System.out.println(charSet);
		return charSet;
	}
	public static void printABC(Set<Character> charSet){
		//因为set集合石无序的,因此要把set集合转化为list
		List<Character> list=new ArrayList<Character>(charSet);
		for (int i = 0; i < list.size() - 2; i++){
            for (int j = i + 1; j < list.size()  - 1; j++){
                for (int k = j + 1; k < list.size() ;k++){
                    System.out.print(list.get(i));
                    System.out.print(list.get(j));
                    System.out.print(list.get(k));
                    System.out.println();
                }
            }
        }
	}
}

运行结果:

abcdabcd

[a, b, c, d]

abc

abd

acd

bcd

时间: 2024-10-29 19:10:12

蓝桥杯.取字符(去掉重复的使用set list实现)的相关文章

蓝桥杯——判定字符的位置。

蓝桥杯——判断字符的位置 题目: 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有‘a’.‘e’.‘i’.‘o’.‘u’五个. 样例输入: hello样例输出:2 样例输入: apple样例输出:1 样例输入: pmp样例输出:0 java code: import java.util.*;public class Yuanyingzifu {    public static int fun(String str)    {        

蓝桥杯 -- 取字母

从键盘读入一个由字母构成的串(不大于30个字符). 从该串中取出3个不重复的字符,求所有的取法. 取出的字符,要求按字母升序排列成一个串. 不同的取法输出顺序可以不考虑. 例如: 输入: abc 则输出: abc 输入: abcd 则输出: abc abd acd bcd 输入: abcaa 则输出: abc 要求考生把所有类写在一个文件中. 调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可. 相关的工程文件不要拷入.请不要使用package语句. 另外,源程序中只能出现JDK1.5

蓝桥杯 取球游戏

今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个, 也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个. 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完. 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时,从标准输入获得数据,其格式如下: 先是一个整数n(n<100),表示接下来有n个整数

蓝桥杯 ALGO-89 字符删除(字符串)

[思路]:用string的replace方法就行,注意题目中的"内部没有空格",是内部没有..所以需要考虑字符串为空或者前后有空格的情况.不能使用cin了,需要用gets等.所以需要把char[]转换成string的步骤.另外,char不能在同一行上先定义字符,后定义字符串.反过来可以,不然会出现不能把字符指针给字符的错误. [AC代码]: #include <iostream> #include <algorithm> #include <string&

蓝桥杯 输出字符

利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形. 输入格式 输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数. 输出格式 输出n行,每个m个字符,为你的图形. 样例输入 5 7 样例输出 ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 数据规模与约定 1 <= n, m <= 26. #in

蓝桥杯 地宫取宝(12&#39;)

X 国王有一个地宫宝库.是n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大, 小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. [数据格式] 输入一行 3个整数,用空格分开:n m

蓝桥杯——说好的进阶之去重复元素的排列组合

将待排列(组合)的数组,先分别统计出种类和个数,然后进行避免重复的排列(组合). /* 1,1,2,3的排列组合 去重复 * (借此复习排列组合) * * 1:2 2个1 * 2:1 1个2 * 3:1 1个3 * * */ static int[] iarr = new int[3];//目标序列 static int[] carr = new int[] { 1, 2, 3 };//3种item static int[] used = new int[] { 2, 1, 1 };//每种it

蓝桥杯:地宫取宝

*/--> pre.src {background-color: Black; color: White;} 蓝桥杯:地宫取宝 Table of Contents 错误的写法 改进后 再次改进 用记忆的方法去改进 标题:地宫取宝 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起

蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. 输入格式 输入一行3个整数,用空格分开:n