趣味字母卡片-拼多多笔试题

趣味字母卡片-拼多多笔试题

小明给儿子小小明买了一套英文字母卡片(总共包含52张,区分大小写),小小明把卡片丢在地上玩耍,并从中取出若干张排成一排,形成了一个卡片序列。

此时,小明需要将卡片序列中的重复字母剔除(同一个字母的大小写只保留一个)。

请问,所有可能的结果中,字母序最小(不区分大小写)的序列的第一张卡片上是哪个字母?

输入格式

共一行,包含一个非空字符串,表示卡片序列,长度为N。

输出格式

共一行,包含一个字母(如果结果是大写字母,则需要转换成小写)。

数据范围

1≤N≤52

输入样例:

xaBXY

输出样例:

a

样例解释

剔除完后的结果是abxy。

java代码实现:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] s = sc.next().toCharArray();
        
        for(int i=0; i < s.length; i++) {
            if(s[i] < 'a') s[i] = (char)(s[i] + 32);
        }
        for(char c = 'a'; c <= 'z'; c = (char)(c + 1)) {
            int k = 0;
            for(; k < s.length && s[k] != c; k++) ;
            if(k >  s.length-1 || s[k] != c) continue;
            int[] cnt = new int[128];
            for(int i=k; i < s.length; i++)
                cnt[s[i]]++;
            boolean can = true;
            for(int i=0; i < k; i++)
                if(cnt[s[i]] == 0) {
                    can = false;
                    break;
                }
            if(can) {
                System.out.println(c);
                break;
            }
        }
    }
}
原文地址:https://www.cnblogs.com/lixyuan/p/12983242.html