0
点赞
收藏
分享

微信扫一扫

笔试算法《找出字符串中第一个只出现一次的字符》


描述
找出字符串中第一个只出现一次的字符

输入描述:
输入几个非空字符串

输出描述:
输出第一个只出现一次的字符,如果不存在输出-1

示例1
输入
asdfasdfo
aabb

输出
o
-1

代码

public class Huawei找出字符串中第一个只出现一次的字符 {

public static void main(String[] args) throws IOException {
my();
niuke();
}


public static void my() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = null;
StringBuilder builder=new StringBuilder();
while ((a = br.readLine()) != null) {
LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();
char[] chars = a.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (map.containsKey(chars[i])) {
map.put(chars[i], -1);
} else {
map.put(chars[i], 1);
}
}

String result = "-1";
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
Character k = entry.getKey();
Integer v = entry.getValue();
if (v == 1) {
result = String.valueOf(k);
break;
}
}
builder.append(result).append("\n");
}
System.out.println(builder.toString());

}

/**
* 牛客网解法
*/
public static void niuke() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
int term = 0;
char[] c = null;
while ((str = br.readLine()) != null) {
term = 0;
c = str.toCharArray();
for (int i = 0; i < c.length; i++) {
term = 0;
for (int j = 0; j < c.length; j++) {
if (c[i] == c[j]) {
term++;
}
}
if (term == 1) {
System.out.println(c[i]);
break;
}
}
if (term != 1) {
System.out.println(-1);
}
}
br.close();
}
}


举报

相关推荐

0 条评论