POJ找第一个只出现一次的字符(多种方法)

1.问题描述


POJ找第一个只出现一次的字符(多种方法)_第1张图片


2.算法分析


a.

我这里使用的是最笨的方法,就是每一次取出字符串中的一个字符依次比较,我是将输入的字符串复制到另一个字符串,然后逐一比较,因为要找到第一个没有重复的字符。那么就相当于找到以后马上跳出循环。没有重复出现的字符必然只有一个,经过循环判断可得。

b.

听朋友说也是可以使用128个ASCALL值判断,就是将每次输入的ASCALL值读取,然后对每次输入的ASCALL值与之前输入的比较,这一个相当于优化了空间毕竟定义的数组小了。


源代码:


a.

#include
#include
#include
using namespace std;

char str1[100001];
char str2[100001];

int main()
{
    gets(str1);
    strcpy(str2,str1);    
    int flag = 0;
    for(int i = 0;i

b.

#include
#include 
using namespace std;

int a[128];
char b[100010];

int main()
{
    int flag=0;    //判断是否存在只出现一次的字符标志 
    cin.getline(b,100001);
    int s=strlen(b);
    for(int i=0;i

你可能感兴趣的:(Oj,C++,alogrithm,字符串)