33,009
社区成员
发帖
与我相关
我的任务
分享
function getchar(s:string):char;
var
i,j:integer;
a:string; //重复的字符
b:string; //不重复的字符
mbool:Boolean;
begin
a:='';
b:='';
for i:=1 to length(s)do
begin
mbool:=False;
for j := 1 to Length(b) do
begin
if b[j] = s[i] then //加入到重复字符中
begin
mbool:=True;
Delete(b,j,1);
SetLength(b,length(a)+1);
a[length(a)]:= s[i];
end;
end;
if mbool = False then //没有重复
begin
for j := 1 to length(a) do
begin
if a[j] = s[i] then //已经在重复数组中
begin
mBool:=True;
Break;
end;
end;
end;
if mbool = False then //不在重复列表中 加入不重复列表
begin
SetLength(b,length(b)+1);
b[length(b)]:= s[i];
end;
end;
if Length(b)>=1 then Result:=b[1];
end;
public class Dayananda {
public static void main(String[] arg) {
if (arg.length==0) arg = new String[]{"Dayananda"};
System.out.println(new Dayananda().firstNonRepeatedCharacter(arg[0]));
}
char firstNonRepeatedCharacter(String s) {
char[] ca = s.toLowerCase().toCharArray();
java.util.Map<Character,Boolean> map = new java.util.LinkedHashMap<Character,Boolean>();
for(Character c : ca) {
map.put(c,map.containsKey(c));
}
for(java.util.Iterator<java.util.Map.Entry<Character,Boolean>> i=map.entrySet().iterator();i.hasNext();) {
if (i.next().getValue()) i.remove();
}
return map.keySet().iterator().next();
}
}
public class NonRepeatedChar {
public static void main(String[] args) {
String str = "daxyananda";
int[] count = new int[26];
char[] charArr = str.toLowerCase().toCharArray();
for (char c : charArr) {
count[c - 'a']++;
}
for (char c : charArr) {
if (count[c - 'a'] == 1) {
System.out.println("First Non repeated character is : " + c);
break;
}
}
}
}
#include<stdio.h>
#include<string.h>
char FindFirstOnlyChar(const char* s);
int main()
{
char *s1="agaabbbcccsdddefffg";
char *s2="agaabbbcccsdddefff";
char *s3="agaabbbcccsdddefffgse";
printf("s1:%c\r\n",FindFirstOnlyChar(s1));
printf("s2:%c\r\n",FindFirstOnlyChar(s2));
printf("s3:%c\r\n",FindFirstOnlyChar(s3));
return 0;
}
char FindFirstOnlyChar(const char* s)
{
int num[26]={0};
int index[26]={0};
int i,len;
len = strlen(s);
for(i=0;i<len;i++)
{
num[s[i]-'a']++;
//记住这个字符第一次出现的位置
if(0==index[s[i]-'a'])
index[s[i]-'a']=i;
}
int pos=len;//用pos记住最早出现一个字符出现的位置
for(i=0;i<26;i++)
{
if(num[i]==1)
{
if(pos>index[i])
{
pos = index[i];
}
}
}
if(len == pos)
{
return -1;
}
else
{
return s[pos];
}
}