剑指offer[34]——第一个只出现一次的字符

题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

这道题目我的思路很简单,就是遍历字符串,然后判断遍历到的字母是否在它之前和之后的字符串出现过,没有的话就直接返回,有的话就继续计算。

function FirstNotRepeatingChar(str)
{
    const _length = str.length;
    if(_length==0){return -1;}
    let temp = [];
    for(let i=0; i<_length; i++){
        if(!temp.includes(str[i]) && str.slice(i+1, _length).indexOf(str[i])<0){
            return i;
        }
        temp.push(str[i]);
    }
    return -1;
}

原文地址:https://www.cnblogs.com/Jacob98/p/12562575.html

时间: 2024-10-31 14:26:00

剑指offer[34]——第一个只出现一次的字符的相关文章

[剑指offer] 34. 第一个只出现一次的字符

题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 一次遍历存储到哈希表 一次遍历取Value为1的第一个字符的索引 class Solution { public: int FirstNotRepeatingChar(string str) { int len = str.size(); if (len == 0) return -1; map<char, int> ma

剑指OFFER之第一个只出现一次的字符(九度OJ1283)

题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1. 样例输入: ABACCDEFF AA 样例输出: 1 -1 解题思路: 首先考虑到时间复杂度,对字符串进行排序或者双层扫描都会到达O(nlong)---O(n^2)的地步. 所以我们考虑额外使用一个数组进行计数,线性时间扫描数组,然后再按照原来的顺序扫描数组找到次数为

【剑指offer】第一个只出现一次的字符

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27106997 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1. 样例输入: ABACCDEFF AA 样例输出: 1 -1 处理字符串中重复或者次数出现等问题,最常用的就是哈希表,用字符串中的字符作为key,

剑指offer (35) 第一个只出现一次的字符 字符哈希表

题目:在字符串中找出第一个只出现一次的字符 题解分析:用空间换时间,使用哈希表,key为字符,value是该字符出现的次数 字符是一个长度为8的数据类型,因此总共只有256种可能,我们可以创建一个长为256的数组, 每个字符根据其ASCII码值作为数组的下标,即哈希表的key,而相应数组位置存储每个字符出现的次数,即哈希表的value char GetFirstOnce(const char* str) { assert(str != NULL); const int hashSize = 25

【剑指Offer】第一个只出现一次的字符位置

问题描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始. 示例: 输入:sabcdsdf 输出:1 算法描述 定义一个52个元素的整型数组aCount,初始化为0,每个字母(大小写)依次对应一个,记录字母出现的次数: 定义一个52个元素的整型数组aPos,初始化为-1,每个字母(大小写)对应一个,记录字母第一次出现的位置: 每次遍历一个到字母,aCount数组里对应字母加1,判断目前aCount数组里该字

《剑指offer》第一个只出现一次的字符位置

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 题目链接:http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出

【剑指offer】第一个只出现一次的数

def FirstNotRepeatingChar(string): hashStr = [0] * 256 for c in string: hashStr[ord(c)] += 1 for c in string: if hashStr[ord(c)] == 1: return c 这里说下ord, 可以作为atoi来用,功能是若给定的参数是一个长度为1的字符串,那么若参数是Unicode对象,则返回对应的整数,若为8-bit的string,则返回对应的值. python的帮助文档里举例:

剑指offer35:第一个只出现一次的字符(hash表使用)

题目:在字符串中找出第一个只出现一次的字符. 分析: 思路一:第一次遍历,从第一个开始,当前字符和以后的字符比较,如何没有相同的,则此字符为所求字符. 此方法可以实现,但时间复杂度很低,为o(n*n) 思路二:(1)只遍历一次,把每种字母对应到一个hash表中 (2)第二次遍历的时候,找到hash中为1的来就是要输出的字母 难点:如何建立hash表那? 我们可知,字符是八位的,我们建立一个256的数组,把每个字符转换为十进制的ascl码,每个字母就对应一个数组位置. #include <iost

剑指offer34:第一个只出现一次的字符的位置

1 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 2 思路和方法 ch[str[i]]++; if(ch[str[i]]==1) return i; 3 C++核心代码 1 class Solution { 2 public: 3 int FirstNotRepeatingChar(string str) { 4 int len = str.length(); 5 if(len=