【JAVA】输入一个字符串,求出该字符串包含的字符集合,按照字母输入的顺序输出。

这是一个关于Java编程的问题,目标是接收一个长度在1到100之间的字符串,包含大小写字母,并按字母顺序输出其中的字符。例如,输入'abcqweracd',输出应为'abcqwer'。解决方案将涉及字符排序和字符串处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据范围:输入的字符串长度满足 1≤n≤100 且只包含大小写字母,区分大小写。
eg:输入 abcqweracd 输出 abcqwer
原链接:https://www.nowcoder.com/questionTerminal/784efd40ed8e465a84821c8f3970b7b5

import java.util.Scanner;

public class Test {
	//方法一
    public static String fun1(String str){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char a = str.charAt(i);
            if (!sb.toString().contains(a+"")){
  //StringBuilder没有contains所以先toString contains参数得是String所以+“”
                sb.append(a);
            }
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println(fun2(str));
        }
    }
    //方法二(利用Hash思想)
    //定义一个整型数组来标记当前字符是否出现过 出现过就将0变为1 继续遍历 出现重复字符 数组内已为1 不打印
    public static String fun2(String str){
        StringBuilder sb = new StringBuilder();
        int[] a = new int[123];  //int[] a = new int[58];
        for (int i = 0; i < str.length(); i++) {
            char b = str.charAt(i);
            if (a[b] == 0){  //if (a[b-65] == 0)
         //b虽然是字符但其实背后也是十进制整数表示的 'A'是65 'z'是122 做差为57
                sb.append(b);
                a[b] = 1;
            }
        }
        return sb.toString();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值