字符串之第一个只出现一次的字符
描述
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -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;}
}
字符串之第一个只出现一次的字符相关推荐
- 《剑指offer》第五十题(字符串中第一个只出现一次的字符)
// 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出 // 'b'. #include & ...
- 刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)
目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈 ...
- 笔试强训第三周编程题part01(年终奖,迷宫问题;微信红包,计算字符串的距离;小易的升级之路,找出字符串中第一个只出现一次的字符,洗牌)
年终奖 OJ链接 此题是一道动态规划的问题 读题可知:只能从上往下和从左往右移动 由此需要前[i-1] [ j ]和[i][j-1]来比较大小来确实最优解. 其中有两种特殊情况,第一行和第一列 代码如 ...
- 找字符串中第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符. 举例:输入abaccdeff,则输出b. 答:假设字符占一个字节,则共有256不同的字符,开辟256空间,用查找表. #include "s ...
- 算法--06谷歌面试:字符串中第一个只出现一次的字符(Java实现)
Q题目 这道题是2006 年 google 的一道笔试题,如下: 在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. A解法 这道题,说难也不难,关键是思路. 有些人思 ...
- 查找字符串中第一个只出现一次的字符
Java Map接口提供了将Key映射到值的对象,HashMap TreeMap 方法 功能 put(K key ,V value) 向集合中添加指定key ,value的映射关系 contains ...
- python找出只出现一次的字符_在一个字符串中找到第一个只出现一次的字符。
题目: 在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析: 一个字符串存储的都是ASCII字符,其ASCII范围不超过255. 因此可以再创建一个255个元素的 ...
- 数组中只出现一次的数字+第一个只出现一次的字符
//哈希法:map class Solution {public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) ...
- bootstrap switch只出现一个对号_python:34.第一个只出现一次的字符位置
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 解析 暴力解法,时间复杂度 ...
最新文章
- 如何在机器学习的框架里实现隐私保护?
- UbuntuServer16.04LTS版怎样修改数据源为国内数据源
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
- React笔记-事件分发
- java 保存bufferedimage_java - 如何将BufferedImage保存为Fi
- LeetCode234题:回文链表
- 计算机网络安全知识汇总
- iframe允许嵌入的视频全屏播放
- 链游成公链新宠,风口之下究竟哪家称王?
- 习题5.4 找出4*5矩阵中值最小和最大元素,并分别输出其值及所在的行号和列号。
- Web报表系统葡萄城报表:报表设计
- MyBioSource 丨艾美捷抗C17ORF75抗体:兔C17ORF75多克隆抗体
- java实现pdf 转 高清图片
- C语言学习:除去剪切板内容的换行与回车
- java qq邮箱登录_SpringBoot实现QQ邮箱注册和登录
- 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
- 【BIB文献管理】LATEX使用bib
- Python获取免费代理IP,并全部测试一遍,结果大失所望
- 屡遭欧盟天价罚单,欧洲国家为何总看谷歌、苹果、Facebook不顺眼?
- VSCode插件之实时字数统计与选中词英汉互译