剑指offer

xiaoxiao2021-02-27  126

/* 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 */ import java.util.ArrayList; import java.lang.Character; class FirstNotRepeatingChar { public static int firstNotRepeatingChar(String str) { if (str==null||str.length()<=0) { return -1; } for (int i=0; i<str.length(); i++) { char c=str.charAt(i); if (str.indexOf(c)==str.lastIndexOf(c)) return i; } return 0; } public static int firstNotRepeatingChar2(String str) { if (str==null||str.length()<=0) { return -1; } int[] countOfEachChar=new int[123];//z的ASCII码为122 for (int i=0; i<str.length(); i++) { countOfEachChar[str.charAt(i)]++; } for (int i=0; i<str.length; i++) { if (countOfEachChar[str.charAt(i)]==1) { return i; } /* if (countOfEachChar[i]==1) { return str.indexOf((char)i); }//这样写的话google返回的是e的位置,因为是按照countOfEachChar数组从前到后遍历的,不对 */ } return 0; } public static void main(String[] args) { System.out.println(firstNotRepeatingChar2("google")); } }
转载请注明原文地址: https://www.6miu.com/read-16130.html

最新回复(0)