1.题目:
2.我的代码:
C++:
#include <iostream>
using namespace std;
int main()
{
string str;
cin >> str;
int hash[58] = { 0 };
for (int i = 0; i < str.size(); ++i)
{
char ch = str[i];
hash[ch - 'A']++;
}
for (int i = 0; i < str.size(); ++i)
{
char ch = str[i];
if (hash[ch - 'A'] == 1)
{
cout << ch << endl;
return 0;
}
}
cout << "-1" << endl;
return 0;
}
Java:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
Map<Character, Integer> map = new HashMap();
for (int i = 0; i < str.length(); ++i) {
char ch = str.charAt(i);
if (!map.containsKey(ch)) {
map.put(ch, 1);
} else {
int value = map.get(ch) + 1;
map.put(ch, value);
}
}
for (int i = 0; i < str.length(); ++i) {
char ch = str.charAt(i);
if (map.get(ch) == 1) {
System.out.println(ch);
return;
}
}
System.out.println("-1");
}
}
3.答案代码:
C++:
/*
*思路:
* 1. 对字符串的每一个字符进行hash映射
* 2. 按顺序检测每一个字符是否只出现一次
*/
#include<iostream>
#include<string>
#include<list>
using namespace std;
int Hash(int key)
{
return key - 'a';
}
int FirstTimeChar(string &str)
{
int hashtable[26] = {0};
//对字符串的每一个字符进行hash映射
for(int i=0; i<str.size(); ++i)
{
int index = Hash(str[i]);
hashtable[index]++;
}
//按顺序检测每一个字符是否只出现一次
for(int i=0; i<str.size(); ++i)
{
int index = Hash(str[i]);
if(hashtable[index] == 1)
return str[i];
}
return -1;
}
int main()
{
string str;
while(getline(cin, str))
{
char res = FirstTimeChar(str);
if(res == -1)
cout<<-1<<endl;
else
cout<<res<<endl;
}
return 0;
}
Java: