剑指offer——第一个只出现一次的字符(思路很基础,但有个方法比较巧妙)
来源:互联网 发布:英翻汉软件 编辑:程序博客网 时间:2024/06/11 22:26
题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
思路:
首先,题目不仅要求返回的是第一个满足要求的字符同时还要返回这个字符所在的位置。
只想到常规思路。
最坏情况O(n^2)的算法,但是过了。说明位运算真的很快?
public int FirstNotRepeatingChar(String str) { if(str==null||str.length()==0) return -1; char[] a = str.toCharArray(); int i = 0; for( ; i<a.length; i++){ int num = 0; for(int j = 0 ; j<a.length; j++){ if((a[i]^a[j])==0) //异或是0,说明两者相同 num++; if(num>1) break; } if(num==1) break; } return i; }
哈希表,空间换时间
public class Solution { public int FirstNotRepeatingChar(String str) { if(str==null||str.length()==0) return -1; char[] a = str.toCharArray(); HashMap<Character,Integer> map = new HashMap<>(); for(int i = 0; i<a.length; i++){ if(map.containsKey(a[i])==false) map.put(a[i],1); else{ int temp = map.get(a[i])+1; map.put(a[i],temp); } } for(int i = 0; i<a.length; i++){ char c = a[i]; if(map.get(c)==1) return i; } return -1; }}
其实数组不用建这么大的。
public int FirstNotRepeatingChar(String str) { char[] c = str.toCharArray(); int[] a = new int['z'+1];//要加1,不然z存不下 for (char d : c) a[(int) d]++; //把字母转换成数字后确定在数组中的位置,这点不错 for (int i = 0; i < c.length; i++) if (a[(int) c[i]] == 1) return i; return -1; }
阅读全文
0 0
- 剑指offer——第一个只出现一次的字符(思路很基础,但有个方法比较巧妙)
- 第一个只出现一次的字符 (剑指offer)
- 剑指offer(java代码)——第一个只出现一次的字符
- 剑指Offer——(34)第一个只出现一次的字符位置
- 【剑指offer】第一个只出现一次的字符
- 剑指offer(35)第一个只出现一次的字符
- 剑指offer--第一个只出现一次的字符
- 剑指offer-35 第一个只出现一次的字符
- 剑指Offer之 - 第一个只出现一次的字符
- 《剑指offer》第一个只出现一次的字符位置
- 剑指offer:第一个只出现一次的字符位置
- 剑指Offer--第一个只出现一次的字符位置
- 【剑指Offer】第一个只出现一次的字符位置
- 【剑指offer】之第一个只出现一次的字符
- 剑指offer:第一个只出现一次的字符位置
- [剑指offer]第一个只出现一次的字符位置
- 《剑指offer》-第一个只出现一次的字符位置
- 剑指offer|第一个只出现一次的字符位置
- gcc内置函数
- Ubuntu16.04 安装Nodejs
- Elasticsearch API 基本使用
- Model/View之子类化QAbstractItemModel实现QTreeView的复选框
- 一直都用忙来懒惰自己
- 剑指offer——第一个只出现一次的字符(思路很基础,但有个方法比较巧妙)
- SpringMVC重要接口(一)HandlerMethodArgumentResolver
- iOS条件编译
- SystemError: could not open configuration file `/etc/libuser.conf': 没有那个文件或目录
- Spark将数据压缩存储
- 系统菜单的分层设计
- 不要再使用NSUserDefaults存储隐私信息了
- 整理下array和string的易混淆的方法
- git常见命令行