网站log文件示例,html学校网站模板,扬中信息网,如何渗透wordpress的网站题目描述 给定一个字符串#xff0c;找到它的第一个不重复的字符#xff0c;并返回它的索引。如果不存在#xff0c;则返回 -1。
案例:
s leetcode
返回 0.s loveleetcode,
返回 2.注意事项#xff1a;您可以假定该字符串只包含小写字母。
思…题目描述 给定一个字符串找到它的第一个不重复的字符并返回它的索引。如果不存在则返回 -1。
案例:
s leetcode
返回 0.s loveleetcode,
返回 2.注意事项您可以假定该字符串只包含小写字母。
思路1暴力破解法时间复杂度O(n^2)空间复杂度O(1)
/*** 思路1暴力破解* param s* return*/
public int firstUniqChar(String s) {if(s.length()1) {return 0;}for(int i0;is.length();i) {int j0;for(j0;js.length();j) {if(ji) {continue;}if(s.charAt(i) s.charAt(j)) {break;}else if (j s.length()-1) {return i;}}if(i s.length()-1 j s.length()) {return s.length()-1;}}return -1;}思路2
/*** 思路2* 1统计每个字母出现的次数HashMap,key为charvalue次数* 2查找仅出现一次的元素* 时间复杂度O(n)* 空间复杂度O(1)* param s* return*/public int firstUniqChar(String s) {MapCharacter, Integer map new HashMapCharacter, Integer();for(int i0;is.length();i) {map.put(s.charAt(i), map.get(s.charAt(i))null?1:map.get(s.charAt(i))1);}for(int i0;is.length();i) {if(map.get(s.charAt(i)) 1) {return i;}}return -1;}思路3 当前最佳
/*** 思路3利用其只有小写字母特别定制版。* 开一个26位字母表元素初始化为n(ns.length())。然后遍历s每个字符去查找字母表如果为n则置为字符的index如果不为n则置为n1.* 最终字母表最小的元素就是答案* 时间复杂度O(n)空间复杂度O(1)* param s* return*/public int firstUniqChar(String s) {if(s.length() 1) {return 0;}int len s.length();int[] arr new int[26];for(int i0;iarr.length;i) {arr[i] len;}for(int i0;ilen;i) {int index s.charAt(i) - a;if(arr[index] len) {arr[index] i;}else if (arr[index] len) {arr[index] len1;}}int min len;for(int item:arr) {if(item min) {minitem;}}return minlen?min:-1;}