描述

在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

数据范围:0 \le n \le 100000≤n≤10000,且字符串只有字母组成。
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)

方法一:数组

巧妙利用字母的ASCII码,因为我们知道小写字母z的ASCII码值为122。所以我们可以使用计数的方法,开辟一个空间为123(数组下标从0开始)的数组,使用ASCII码(对应数组的下标)表示字母,去统计字母出现的次数。

最后我们只需要遍历一遍字符串,找到那个只出现一次的字符即可

package test;public class FirstNotRepeatChar2 {public static void main(String[] args) {FirstNotRepeatChar2 firstNotRepeatChar2 =new FirstNotRepeatChar2();int index = firstNotRepeatChar2.FirstNotRepeatingChar("google");System.out.println(index);}//将arr数组整个作为一个大的计数器,开始计数器都是0,//用字符转换成ascii来代表下标,定位这个字符,并统计个数//开辟足够多的空间来计数public int FirstNotRepeatingChar(String str) {int arr [] =new int[150];//统计个数for (int i = 0; i < str.length(); i++) {arr[str.charAt(i)]++;//定位下标,来代表字母}//循环str,判断个数等于1的位置for (int i = 0; i < str.length(); i++) {//元素统计的个数,即计数放在arr整形数组中if(arr[str.charAt(i) ] ==1){return i;}}return -1;}
}

字符串之第一个只出现一次的字符相关推荐

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

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

  2. 刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)

    目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈 ...

  3. 笔试强训第三周编程题part01(年终奖,迷宫问题;微信红包,计算字符串的距离;小易的升级之路,找出字符串中第一个只出现一次的字符,洗牌)

    年终奖 OJ链接 此题是一道动态规划的问题 读题可知:只能从上往下和从左往右移动 由此需要前[i-1] [ j ]和[i][j-1]来比较大小来确实最优解. 其中有两种特殊情况,第一行和第一列 代码如 ...

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

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

  5. 算法--06谷歌面试:字符串中第一个只出现一次的字符(Java实现)

    Q题目 这道题是2006 年 google 的一道笔试题,如下: 在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. A解法 这道题,说难也不难,关键是思路. 有些人思 ...

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

    Java Map接口提供了将Key映射到值的对象,HashMap  TreeMap 方法 功能 put(K key ,V value) 向集合中添加指定key ,value的映射关系 contains ...

  7. python找出只出现一次的字符_在一个字符串中找到第一个只出现一次的字符。

    题目: 在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析: 一个字符串存储的都是ASCII字符,其ASCII范围不超过255. 因此可以再创建一个255个元素的 ...

  8. 数组中只出现一次的数字+第一个只出现一次的字符

    //哈希法:map class Solution {public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) ...

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

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

最新文章

  1. 如何在机器学习的框架里实现隐私保护?
  2. UbuntuServer16.04LTS版怎样修改数据源为国内数据源
  3. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
  4. React笔记-事件分发
  5. java 保存bufferedimage_java - 如何将BufferedImage保存为Fi
  6. LeetCode234题:回文链表
  7. 计算机网络安全知识汇总
  8. iframe允许嵌入的视频全屏播放
  9. 链游成公链新宠,风口之下究竟哪家称王?
  10. 习题5.4 找出4*5矩阵中值最小和最大元素,并分别输出其值及所在的行号和列号。
  11. Web报表系统葡萄城报表:报表设计
  12. MyBioSource 丨艾美捷抗C17ORF75抗体:兔C17ORF75多克隆抗体
  13. java实现pdf 转 高清图片
  14. C语言学习:除去剪切板内容的换行与回车
  15. java qq邮箱登录_SpringBoot实现QQ邮箱注册和登录
  16. 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
  17. 【BIB文献管理】LATEX使用bib
  18. Python获取免费代理IP,并全部测试一遍,结果大失所望
  19. 屡遭欧盟天价罚单,欧洲国家为何总看谷歌、苹果、Facebook不顺眼?
  20. VSCode插件之实时字数统计与选中词英汉互译

热门文章

  1. opencv之图像采样
  2. 立体匹配算法:《Cross-Scale Cost Aggregation for Stereo Matching》总结
  3. 苹果新款可能低价iPhone售价200美元起
  4. 免费版小程序证件照源码
  5. MySQL数据库进阶系统学习6(MySQL高级-视图-事务-索引-账户管理-主从)
  6. (转)从程序员角度看ELF-译文
  7. 数值计算——number-precision
  8. 教你个人实现支付宝pc网页支付详细教程
  9. php tcpping,【实践】如何检查TCP 端口连通性测试[psping和paping]
  10. RSA大会主角 云安全