首页 > 试题广场 >

字符串筛选

[编程题]字符串筛选
  • 热度指数:1833 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为字符串, 需要去除所有之前曾经出现过的字符,只保留第一次出现的字符
示例1

输入

"aab"

输出

"ab"

说明

删除了第二个a  
示例2

输入

"hellowelcometoxiaomi"

输出

"helowcmtxia"

说明

只保留了第一次出现的字符  

备注:
字符串只包含大小写字母
位运算判重,字符串只包含大小写字母(52种),用一个long存储出现过的字母
public static String unique_string (String s) {
        long dic = 0;
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i < s.length(); ++i) {
            long c = 1L << s.charAt(i) - 'a';
            if((dic & c) == 0){
                sb.append(s.charAt(i));
                dic |= c;
            }
        }
        return sb.toString();
    }


发表于 2022-04-28 23:34:31 回复(0)