《剑指offer》第一次只出现一次的字符
题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
解析:题目意思是找整个字符串第一次只出现一次的字符的位置,以google为例子,第一次重复出现的字母为l,该l的位置为4,返回4即可。解题思路为:先看该字母后面有没有重复的,如果后方有重复的,就把该字符添加到已经存在的list里,如果后方没有重复的,还要看该字符的前方有没有重复的,这时候就需要去list里找了,如果list也没有该字符,说明该字符第一次出现了,可以返回了,否则继续找了
import java.util.ArrayList;
import java.util.List;
public class FirstNotRepeatingChar {//googlepublic static int FirstNotRepeatingChar(String str) {List<Character> list = new ArrayList<>();for(int i=0;i<str.length();i++){boolean flag=false;Character temp =str.charAt(i);for(int j=i+1;j<str.length();j++){if(str.charAt(j)==str.charAt(i)){flag=true;//后方有重复的字符break;}}if(flag){//后方存在了,把该字符放入listlist.add(temp);}if(!flag){//后方没有if(!list.contains(temp)){//查看前方有没有,如果前方也没有,那就是第一次出现了return i;}}}return -1;}}
《剑指offer》第一次只出现一次的字符相关推荐
- 【LeetCode】剑指 Offer 48. 最长不含重复字符的子字符串
[LeetCode]剑指 Offer 48. 最长不含重复字符的子字符串 文章目录 [LeetCode]剑指 Offer 48. 最长不含重复字符的子字符串 package offer;import ...
- 剑指offer——python【第54题】字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...
- 【剑指offer】最长不含重复字符的子字符串
题目: * 面试题48:请从字符串中找出一个最长的不包含重复字符的子字符串, * 计算该最长子字符串的长度.假设字符串中只包含从'a'到'z'的字符. * 例如,在字符串中'arabcacfr',最长 ...
- 字符扫描剑指Offer读书笔记之第二章2字符替换Strut2教程-java教程
每日一贴,今天的内容关键字为字符扫描 给定一个字符串str和一个子串SubStr,如果str面里的空间充足,写一个函数将str面里的字符ch替换成SubStr.书中只是一个特例:将格空替换成%20. ...
- 【算法】剑指 Offer 48. 最长不含重复字符的子字符串
1.概述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 ...
- leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列
剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...
- 剑指offer做题记录
1. 剑指 Offer 03. 数组中重复的数字 力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...
- 【leetcode】 剑指 Offer学习计划(java版本含注释)(上)
目录 前言 第一天(栈与队列) 剑指 Offer 09. 用两个栈实现队列(简单) 剑指 Offer 30. 包含min函数的栈(简单) 第二天(链表) 剑指 Offer 06. 从尾到头打印链表(简 ...
- 《剑指offer》75题 C++详细题解
目录 简单: 剑指 Offer 03. 数组中重复的数字 map: unordered_map: 原地交换 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 出栈入栈 双 ...
- 【剑指Offer】剑指Offer刷题笔记
数组和字符串 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个 ...
最新文章
- 如何基于RocketMQ设计一套全链路消息不丢失方案?
- css Gradients(渐变)
- 杭州 |《PMCAFF产品经理第一课》阿里国际CRM、LinkedIn、丁香园、网易邮箱等一线大咖私房干货免费奉送!...
- php4 class,PHP在类中获得当前class名称_php
- Makefile文件试错
- 國慶和中秋的學習成果
- 临键锁如何实现幻读_如何实现智能锁客户裂变?看完你就已成功一半!
- python 的异常及其处理
- python爬虫爬取公众号_Python爬虫案例:爬取微信公众号文章
- 新CEO能使诺基亚起死回生吗?
- 经典Hive-SQL面试题及答案
- STC15单片机-数码管显示PCB板温度(TM1620驱动芯片使用介绍)
- ens32文件空白(没有ens33文件)
- java计算机毕业设计高考填报信息系统源码+数据库+系统+lw文档+部署
- 计算机逻辑与 或 非的表达式,逻辑表达式
- 上海最新消防设施操作员考前必背考点,模拟真题及答案
- 手机被偷完整找回方案
- 复旦计算机和中科大计算机,复旦大学和中国科学技术大学哪个实力更强?
- MongoDB 数据库(一):MongoDB的介绍与安装
- 【《机器人技术》复习】