字符集合!!!

简介: 字符集合!!!

字符集合!!!

描述

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

数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 ,且只包含大小写字母,区分大小写。

本题有多组输入


输入描述:

每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。


输出描述:

每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。

示例1 输入: abcqweracb

输出: abcqwer

示例2

输入:

aaa

输出:

a


思路

以:abcqweracb 分析

首先我们要从一个字符串中获取到每个字符,那么需要遍历字符串,拿到每个字符

for(int i=0;i<str.length();i++){
                char ch=str.charAt(i);
}

因为相同的字符只输出一次,那么我们最好标记一下,比如当’a’第一次出现时,定义一个变量int x,让x=1,当’a’第2次第三次…出现时,我们让这个变量x=0。那么对定义的变量有什么要求?

其实,定义的该变量最好是boolean类型,因为boolean类型默认值false,也就是当’a’字符没有出现过时,该变量为false,比较符合大多数人的逻辑,当’a’出现时,把定义的变量赋值为true;

在每次遍历一个字符时判断一下,如果boolean x=false,说明没输出过字符’a’,那么把字符’a’输出,并把x变量赋值为true;那么下次判断的是时候,打印语句就不会执行。

因为输入的字符有许多种,不可能一种字符定义一个变量,此时我们可以定义一个boolean数组,当字符为’a’时,(根据ASCII码值,字符’a’=97),对应该数组下标97,字符为’b’时,对应数组下标98,

综上,遍历字符串,拿到每个字符,然后根据这个字符的ASCII值,对应一个boolean数组的下标,通过下边就可以唯一对应一个字符,当某个字符没出现时默认为false,,当

该字符第一次出现时,因为默认值为false,进出判断语句,然后让该字符对应数组的赋值为true;下次该字符再次出现时,再也不会进入判断语句。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
       while (in.hasNextLine()) { // 注意 while 处理多个 case
          String str=in.nextLine();
          StringBuilder stringBuilder=new StringBuilder();
          boolean[] flgs=new boolean[127];
          for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(flgs[ch]==false){ 
                  stringBuilder.append(ch);//如果某字符第一次出现,,就把
                  //该字符连接到 stringBuilder,便于后续直接输出
                  flgs[ch]=true;
            }
          }
          System.out.println(stringBuilder);
        }
    }
}


目录
相关文章
|
30天前
|
Java
Java集合类ArrayList应用 | 如何在字符串s1中删除有在字符串s2出现的字符?
这是一个关于Java编程面试题的摘要,题目要求从字符串s1中删除s2中存在的字符。解题思路包括使用ArrayList或StringBuilder实现。ArrayList实现时,遍历s1,如果字符不在s2中,则添加到ArrayList;StringBuilder实现有两种方法,一是新建StringBuilder并追加s1,然后遍历删除s2中的字符,二是直接在原地修改s1的StringBuilder对象。代码示例中展示了这些方法。
34 3
|
24天前
|
C++ 安全
高效遍历:C++中分隔字符串单词的3种方法详解与实例
拷贝并交换(Copy-and-Swap)是C++中实现赋值操作符和异常安全拷贝构造函数的技巧。它涉及创建临时对象,使用拷贝构造函数,然后交换数据以确保安全。C++11之前的策略在此后及C++11引入的移动语义和右值引用下仍有效,但后者提供了更高效的实现方式。
|
30天前
|
存储 索引
DAY-2 | 哈希思想:求字符串包含的字符集合
这是一个关于代码实现的问题,主要展示了两种利用哈希思想去除字符串中重复字符的方法。第一种方法使用了`boolean[] flg`数组来标记字符是否出现过,遍历字符串时,如果字符未出现则添加到结果并标记为已出现。第二种方法使用`char[] ch`数组直接存储字符出现状态,先遍历一次字符串记录出现过的字符,再遍历一次输出未标记的字符。
19 0
|
1月前
|
索引 容器
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
|
1月前
字符和数组问题
字符和数组问题
|
1月前
|
C++ 索引
字符串中的第一个唯一字符(C++)
字符串中的第一个唯一字符(C++)
38 0
|
9月前
字符对应的URL编码值集合
字符对应的URL编码值集合
41 0
字符串转数组、数组转字符串、给第一个单词色值
字符串转数组、数组转字符串、给第一个单词色值
|
索引
字符串中的第一个唯一字符
字符串中的第一个唯一字符
53 0
|
JSON 数据格式
将字符串按指定的符号分割为集合或数组
将字符串按指定的符号分割为集合或数组
152 0
将字符串按指定的符号分割为集合或数组