题目描述:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。
* 若为空串,返回-1。位置索引从0开始

解法一:

public int FirstNotRepeatingChar(String str) {if(str==null) return -1;int address=0;char[] ch = str.toCharArray();//保存每个字符的数组//LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。LinkedHashMap<Character,Integer> hash = new LinkedHashMap<Character,Integer>();for(int i=0;i<ch.length;i++){if(hash.containsKey(ch[i])){hash.put(ch[i], hash.get(ch[i])+1);//将item出现的次数加1;}else{hash.put(ch[i], 1);}        }/*for(char key:hash.keySet()){if(hash.get(key)==1){return key;//这里是返回第一个只出现一次的字符,那么他的位置?}}*/for(int i=0;i<ch.length;i++){if(hash.get(ch[i])==1) return i;}return -1;}

解法二:不占用内存

public int FirstNotRepeatingChar(String str) {//当字符串的字母大小写都一致的情况,要么全是大写,要么全是小写。if (str.length() == 0) {return  -1;}char c = 'A';//初始化c,是从A开始,65if(str.charAt(0) >= 'a'){c = 'a';//如果第一个字母是小写,则从a开始,97
        }int[] counts = new int[26];//字符间的差值不会大于26for (int i = 0; i < str.length(); i++) {counts[str.charAt(i) - c]++;//表示
        }for (int i = 0; i < str.length(); i++) {if (counts[str.charAt(i) - c] == 1){return i;}}return -1;}

转载于:https://www.cnblogs.com/tjuxqcui/p/5541377.html

第一个只出现一次的字符位置相关推荐

  1. bootstrap switch只出现一个对号_python:34.第一个只出现一次的字符位置

    题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 解析 暴力解法,时间复杂度 ...

  2. 剑指offer:第一个只出现一次的字符

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

  3. 【剑指offer-Java版】35第一个只出现一次的字符

    第一个只出现一次的字符: 对于给定的字符,遍历一遍,然后将其映射到一个hash表中,遍历完成之后,遍历哈希表, 遇到的第一个哈希值为1所对应的字符就是第一个只出现了一次的字符 public class ...

  4. 《剑指offer》第五十题(字符串中第一个只出现一次的字符)

    // 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出 // 'b'. #include & ...

  5. 面试题之在字符串中查找出第一个只出现一次的字符的位置

    样例:比如"abcdabc",第一个只出现一次的字符为d,位置为3 解决方案1:O(n*n)的复杂度 遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符 ...

  6. 找字符串中第一个只出现一次的字符

    题目:在一个字符串中找到第一个只出现一次的字符. 举例:输入abaccdeff,则输出b. 答:假设字符占一个字节,则共有256不同的字符,开辟256空间,用查找表. #include "s ...

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

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

  8. LeetCode-剑指 Offer 50. 第一个只出现一次的字符

    剑指 Offer 50. 第一个只出现一次的字符 class Solution {public:char firstUniqChar(string s) {unordered_map<char, ...

  9. 程序员面试题精选100题(13)-第一个只出现一次的字符[算法]

    题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b. 分析:这道题是2006年google的一道笔试题. 看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符 ...

最新文章

  1. 黄聪:ICTCLAS分词系统研究(一)(转)
  2. CSP认证201509-3 模板生成系统[C++题解]:字符串处理、模拟、哈希表、引号里面有空格的字符串怎么读入
  3. ubuntu下修改中文字体
  4. php time相差12小时_PHP服务器时间差8小时解决方案
  5. c#操作Xml(八)
  6. J2EE 企业级应用架构简述
  7. php-fpm7.0,php-fpm7.0 慢查询设置及说明
  8. 多益网络 视频面试面试总结20180816
  9. 亚马逊警用刷脸计划小小受阻,但原因并不是贝佐斯妥协
  10. [置顶] 话说你最拼命的时候怎样拼命的?
  11. 西门子PLC程序下载方法简介
  12. 【源码更新】活动报名登记预约问卷表单系统微信小程序支持导入导出自定义表单填报字段
  13. 简单的逻辑思维题分享1(附详细答案)
  14. idea生成WebService调用代码
  15. tt桌球瞄准器手机版_tt桌球辅助瞄准器-tt桌球辅助瞄准手机版1.0.0 安卓版-东坡下载...
  16. 美团校招题 小团的默契游戏
  17. VMware 配置局域网内访问
  18. 华硕笔记本如何锁定计算机,华硕笔记本win10怎么快捷锁屏
  19. 语音识别——kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)
  20. Linux实验精华总结

热门文章

  1. JAVA8常量池监控_深入探索Java常量池
  2. elasticsearch组件的安装启动,测试等(windows)
  3. java执行器是什么_Java 并发编程:任务执行器 Executor 接口
  4. 3项目里面全局用less变量 cli vue_VUE CLI3 less 全局变量引用
  5. 北京高性能计算机应用中心,中国气象局高性能计算机系统资源使用报告-北京高性能计算机应用中心.PDF...
  6. react不同环境不同配置angular_DevOps 前端项目(angular、vue、react)打包静态资源生成一份Docker镜像支持部署不同环境...
  7. linux内核使用scons构建,如何使用scons进行交叉构建
  8. 使用proxy来调用未定义的属性方法
  9. 浅析如何让企业网站实现精准营销?
  10. 网站优化之网站文章更新需注意哪些问题?