02:找第一个只出现一次的字符
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
//定义一个统计26个字母出现次数的数组
int[] num =new int [26];
int min = 1;//仅出现一次
Scanner sc = new Scanner(System.in);
//将输入字符串转为char【】
String str = sc.nextLine();
char[] str1 = str.toCharArray();
//定义一个包含26个英文字母的char【】
String s = "abcdefghijklmnopqrstuvwxyz";
char[] s1 = s.toCharArray();
//计算输入字符串中,字母出现的次数
for (int i = 0; i < str1.length; i++) {
char ch = str1[i];
for (int j = 0; j < s1.length; j++) {
if (ch==s1[j]) {
num[j]++;
}
}
}
String ans = "";
int flag = 0;
//判断是否存在 第一个仅出现一次的字符
for (int i = str1.length; i > 0 ; i--) {//从后往前判断,最后一次出现的,就是第一次出现的。
if(num[str1[i-1]-'a'] == min) {
ans = String.valueOf(s1[str1[i-1]-'a']);
flag = 1;
}
}
System.out.println(flag==1?ans:"no");
}
}