小白打怪升级之路...字符串 (2)

243 阅读1分钟

找第一个只出现一次的字符

总时间限制: 1000ms 内存限制: 65536kB

描述

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

输入

一个字符串,长度小于100000。

输出

输出第一个仅出现一次的字符,若没有则输出no。

样例输入

abcabd

样例输出

c

思路

1.输入只有小写字母,使用字符数组输入即可。使用strlen()确定字符串长度。

char a[100000];
cin>>a;
int len=strlen(a);

2.若输入只有一个字符,直接输出即可。

if(len==1)
{
	cout<<a;
	return 0;
}	

3.使用for循环确定字符是否有重复

for(int i=0;i<len;i++)
{
	x=a[i];
	for(int j=0;j<len;j++)
	{	
		if(a[j]==x&&j!=i)//重复时跳出循环。j!=i防止与自身比较导致跳出循环
			break;
		if(j==len-1)//整个字符串中无相同字符时输出该字符
		{
			cout<<a[i];
			return 0;
		}	
	}	
} 

提交代码(C++)

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char a[100000];
	cin>>a;
	int x, len=strlen(a);
	if(len==1)
	{
		cout<<a;
		return 0;
	}	
	for(int i=0;i<len;i++)
	{
		x=a[i];
		for(int j=0;j<len;j++)
		{	
			if(a[j]==x&&j!=i)
				break;
			if(j==len-1)
			{
				cout<<a[i];
				return 0;
			}	
		}	
    } 
	cout<<"no";
    return 0;
}