首页 > 试题广场 >

第一个不重复的字符

[编程题]第一个不重复的字符
  • 热度指数:104 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在字符串中找到第一个不重复的字符。
例:对于字符串“hellohehe”,第一个不重复的字符是“o”。
如果每个字符都有重复,则抛出运行时异常。
示例1

输入

"hellohehe"

输出

o

备注:
 允许使用集合类
/**
  * 
  * @param str string字符串 
  * @return char字符型
  */
function findFirstNonRepeatChar( str ) {
    // write code here
    const arr = str.split('')
    const res = arr.filter(item => arr.indexOf(item) === arr.lastIndexOf(item))
    return res.length === 0 ? new Error() : res[0]
}
module.exports = {
    findFirstNonRepeatChar : findFirstNonRepeatChar
};

发表于 2023-03-09 22:55:03 回复(0)
public char findFirstNonRepeatChar (String str) {
        int[] map = new int[128];
        for (char c: str.toCharArray()) {
            map[c]++;
        }
        for (char c: str.toCharArray()) {
            if (map[c] == 1) {
                return c;
            }
        }
        throw new RuntimeException("没有只有一个的字符");
    }

发表于 2022-03-09 16:54:28 回复(0)
class Solution {
public:
    /**
     * 
     * @param str string字符串 
     * @return char字符型
     */
    char findFirstNonRepeatChar(string str) {
        // write code here
        string s2;
        int k=0;
        double len=str.length();
        for(int i=0;i<len;i++)
        {
            int j=0;
            for(;j<len;j++)
            {
                if(str[i]==str[j] && i!=j)
                    break;
            }
            if (j==len)
            {
                s2[k++]=str[i];
            }
        }
         return s2[0];
        }
};

发表于 2021-04-14 01:08:20 回复(0)
public char findFirstNonRepeatChar (String str) throws Exception {
        // write code here
        Map<Character, Integer> map = new LinkedHashMap<>();
        char[] chars = str.toCharArray();
        for (char c : chars) {
            if(!map.containsKey(c)){
                map.put(c, 1);
            }else{
                map.put(c, map.get(c) + 1);
            }
        }
        Set<Map.Entry<Character, Integer>> entries = map.entrySet();
        for (Map.Entry<Character, Integer> entry : entries) {
            if(entry.getValue() == 1){
                return entry.getKey();
            }
        }
        throw new Exception("每个字符都有重复");
    }

发表于 2021-02-24 10:46:32 回复(0)
    public static Character findUnique(String str) throws Exception {
        Set<Character> repeatSet = new HashSet<>();
        Set<Character> uniqueSet = new ListOrderedSet();
        if (StringUtils.isNotBlank(str.trim())) {
            char[] chars = str.toCharArray();

            for (char c : chars) {
                if (!repeatSet.contains(c)) {
                    uniqueSet.add(c);
                } else {
                    uniqueSet.remove(c);
                }

                repeatSet.add(c);
            }

        }

        if (CollectionUtils.isEmpty(uniqueSet)) {
            throw new Exception("没有独特字符,全体字符都有重复");
        }
        return uniqueSet.iterator().next();
    }

编辑于 2021-02-02 20:11:01 回复(0)