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

java 版本:

package suanfa;


import java.util.Iterator;
import java.util.LinkedHashMap;

public class findthefirstchar {
	
	public char findchar(String str){
		
		LinkedHashMap<Character,Integer> container=new LinkedHashMap<Character,Integer>();
		
		char[] temp=str.toCharArray();
		
		for(int i=0;i<temp.length;i++){
			if(container.containsKey(temp[i])){
				int value=container.get(temp[i]);
				container.put(temp[i],++value);
				
				
			}
			else{
				container.put(temp[i], 1);
			}
			
		}
		Iterator iter=container.keySet().iterator();
		while(iter.hasNext()){
			
			if(container.get(iter.next()).intValue()==1){
				
				 char a=(Character) iter.next();
				  return a;
			}
		}
		
		return (Character) null;
		
		
		
	}
	public static void main(String[] args) {
		findthefirstchar ffc=new findthefirstchar();
		String a="ssbbsdse";
		char b=ffc.findchar(a);
		System.out.println("+++++++++++++++++++++++   "+b);
	}

}

 java 版本,尚需改善,尤其是linkedhashmap.回去,仔细察看下;

c版本:是正确的:

char FindTheChar(char *str)
{
int times[128] = {0}, firstPos[128];
for(int i = 0; i < strlen(str); i++)
{
times[str[i]]++;
if(times[str[i]] == 1)
firstPos[str[i]] = i;
}
minPos = strlen(str);
for(char i = 1; i < 128; i++)
if(times[i] == 1)
if(minPos > firstPos[i])
minPos = firstPos[i];
return str[minPos];
}

 

你可能感兴趣的:(字符串中找到第一个只出现一次的字符)