import java.util.Hashtable; public class T035 { public static void main(String[] args) { FirstNotRepeatingChar("abaccdeff"); } public static char FirstNotRepeatingChar(String pString) { Hashtable t = new Hashtable(); int tableSize = 256; for (in…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 思路 创建哈希表,键值key为字符,值value为出现次数.第一遍扫描:对每个扫描到的字符的次数加一:第二遍扫描:对每个扫描到的字符通过哈希表查询次数,第一个次数为1的字符即为符合要求的输出. 由于字符(char)是长度为8的数据类型,共有256中可能,因此哈希表可以用一…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'. 思路 字符只能一个一个从字符流中读出来,因此要定义一个容器来保存字符以及其在字符流中的位置. 为尽可能搞笑解决问题,要在O…
题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Hashmap将每一个字符出现的值存储起来,然后再遍历字符串,返回第一个字符值为1的索引即可. 程序: C++ class Solution { public: int FirstNotRepeatingChar(string str) { ; i < str.size(); ++i){ m[str[i]]…
一.题目 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 二.思路 详见代码注释. 三.代码 import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; public class Solution { public int FirstNotRepeatingChar(String str) { if(str==null||str.length(…
  题目描述:   在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).   解题思路:   对于本题,这里给出以下三种解法:(1)用 HashMap 建立每个字符与其出现次数的映射,然后再依次遍历字符串时,找到第一个出现次数为1的字符,返回其位置即可.(2)更进一步,因为该字符串全部是字母,所以可以用一个数组代替哈希表,数组下标就代表该字母.(3)使用模式匹配从前(indexOf)和从后(las…
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是"l". 牛客网刷题地址 思路分析 还是将数据存放在Map中,哈希表用数组occurrence实现.数组中的元素occurrence[i]和ASCII码的值为i的…
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 牛客网刷题地址 思路分析 可以遍历一遍字符串,将其存在map里面,并统计出现的次数,返回出现次数为1时的位置 测试用例 功能测试:字符串中存在只出现一次的字符;字符串中不存在只出现一次的字符;字符串中所有字符都只出现一次. 特殊输入测试:字符串为nullptr指针. Java代码 public class Offer050_01 { pub…
剑指 Offer 50. 第一个只出现一次的字符 Offer_50 题目详情 方法一:使用无序哈希表 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/8 22:13 */ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * 题目详情:在字符串 s 中找出第一个只出现一次的字符.如果没…
一.题目:第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'.要求时间复杂度为O(n). 最直观的想法是从头开始扫描这个字符串中的每个字符.当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符.如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路的时间复杂度是O(n2),但是不满足要求. 二.解题思路:以空间换时间 为了解决这个问题,我们可以定义一…