給定一字串,求字串中第一次出現的非重複的字元,例如abaaedgff,輸出b.(Java 實現)
阿新 • • 發佈:2019-01-27
//方法1: public class GetFirstNotRepeatChar { public static char getChar(String s){ char[] c = s.toCharArray(); int[][] tmp = new int[26][2];//臨時陣列,記錄元素出現的次數,第1列記錄出現的次數,第2列記錄元素的下標 int pos = 26; //用於返回第一個不重複出現的字元所在的位置 for(int i=0; i<c.length; i++){ int shift = c[i] - 'a'; tmp[shift][0]++; if(tmp[shift][1]==0) tmp[shift][1] = i; } for(int j=0; j<26; j++){ if(tmp[j][0]==1){ if(pos>tmp[j][1]){ pos = tmp[j][1]; } } } if(pos==26){ return '0'; }else{ return c[pos]; } } //方法2:使用Java API提供的字串處理函式 public static String findChar(String s){ String str = "Not find any char"; for(int i=0; i<s.length(); i++){ String char = String.valueOf(s.charAt(i)); //如果一個字元第一次出現和最後一次出現的的位置相同,則認為此字元在字串中只出現一次 if(s.indexOf(char) == s.lastIndexOf(char)){ str = char; break;//跳出迴圈 } } return str; } public static void main(String[] args){ System.out.println(GetFirstNotRepeatChar.getChar("agbfaaeff")); System.out.println(GetFirstNotRepeatChar.findChar("agbfaaeff")); } }