【剑指Offer】只出现一次的字符】的更多相关文章

题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l". 思路: 字符流:像流水一样的字符,一去不复返,意味着只能访问一次. 方法1:将字符流保存起来 通过哈希表统计字符流中每个字符出现的次数,顺便将字符流保存在string中,然后再遍历string,从哈希表中找到第一个出现…
题意 如题,字符串只含a-z,输出该子串长度.例:"arabcacfr",输出4. 解题思路 递归思想 计f(i)为以第i个字符结尾的最长不含重复字符的子串长度. 状态转移:计d为当前字符出现位置和上次出现该字符的位置之差. (1) 当d>f(i-1),说明字符出现在f(i-1)对应的最长子串外,所以f(i)=f(i-1)+1. (2) d<=f(I-1),说明字符出现在f(i-1)对应的最长子串中,此时说明当前字符与上次出现的改字符之间无重复字符,所以f(i)=d; 用循…
Solution 动态规划. f(i)表示包含第i个字符的最长子串. 如果第i个字符没在之前出现过,那么f(i) = f(i - 1) + 1 如果第i个字符在之前出现过,这个时候应该分两种情况,假设与之前出现的距离为d,如果d>f(i - 1) 说明之前出现的字符不在f(i - 1)包含的字符串内,那么f(i) = f(i - 1) + 1, 如果d <= f(i - 1),说明包含的重复字符在f(i - 1)内,那么f(i) = d. Code class Solution { publi…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 思路 创建哈希表,键值key为字符,值value为出现次数.第一遍扫描:对每个扫描到的字符的次数加一:第二遍扫描:对每个扫描到的字符通过哈希表查询次数,第一个次数为1的字符即为符合要求的输出. 由于字符(char)是长度为8的数据类型,共有256中可能,因此哈希表可以用一…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是'g'.当从该字符流中读出前六个字符"google"时,第一个只出现一次的字符是'l'. 思路 字符只能一个一个从字符流中读出来,因此要定义一个容器来保存字符以及其在字符流中的位置. 为尽可能搞笑解决问题,要在O…
  本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 思路 记住:两个相同的数字异或等于0. 如果数组中只有一个数字只出现一次,我们从头到尾异或每个数字,那么最终的结果刚好是那个只出现一次的数字. 而本题里数组中有两个数字只出现一次,如果能够将数组分为两部分,两部分中都只有一个数字只…
  本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次.请找出那个只出现一次的数字. 思路 这道题中数字出现了三次,无法像56-1) 数组中只出现一次的两个数字一样通过利用异或位运算进行消除相同个数字.但是仍然可以沿用位运算的思路. 将所有数字的二进制表示的对应位都加起来,如果某一位能被三整除,那么只出现一次的数字在该位为0:反之,为1. 测试算例 1.功能测试(…
剑指Offer - 九度1351 - 数组中只出现一次的数字2013-11-23 01:23 题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组大小.2<=n <= 10^6. 第二行包含n个整数,表示数组元素,元素均为int. 输出: 对应每个测试案例,输出数组中只出现一次的两个数.输出的数字从小到大的顺序. 样例输入: 8 2 4 3 6 3 2 5 5 样例输出: 4 6…
剑指Offer - 九度1283 - 第一个只出现一次的字符2013-11-21 21:13 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1. 样例输入: ABACCDEFF AA 样例输出: 1 -1 题意分析: 题目要求给定一个大写字母的字符串,找出第一个只出现了一次的字符的下标,从0开始. 由于ascii字符不…
剑指Offer(三十四):第一个只出现一次的字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 一.引子 这个系列是我在牛客网上刷<剑指Offer>的刷题笔记,旨在提升下自己的算法能力. 查看完整的剑指Offer算法题解析请点击CSDN和github链接: 剑指Offe…