public class Test
{
public static void main(String args[])
{
String str = "abccdab";
getFirstChar(str);
}
public static void getFirstChar(String string)
{
int[] bitMap = new int[26];
char[] ch = string.toCharArray();
for (int i = 0; i < ch.length; ++i)
{
bitMap[ch[i] - 'a']++;
}
int i = 0;
while (i++ < ch.length)
{
if (bitMap[ch[i] - 'a'] == 1)
{
System.out.println(ch[i]);
break;
}
}
if (i >= ch.length)
System.out.print("sorry, there is no need what u wanted.");
}
}
空间换时间:
/********************************************
* 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
*********************************************/
#include <stdio.h>
#include <string.h>
#define N 256
int charHash[N] = {0};
void initCharHash(const char *s)
{
while(*s)
{
charHash[*s]++;
s++;
}
}
char findFirstOnceChar(const char *s)
{
while(*s)
{
if(charHash[*s] == 1)
{
return *s;
}
s++;
}
return 0;
}
int main(void)
{
char *str = "abaccdeff";
initCharHash(str);
printf("%c\n",findFirstOnceChar(str));
return 0;
}
/*********
b
Process returned 0 (0x0) execution time : 1.254 s
Press any key to continue.
**********/