zoukankan      html  css  js  c++  java
  • 如何找出一个字符串中第一个只出现一次的字符

    思路分析:采用hash法来实现,首先申请一个长度为256的表,对每个字符hash计数即可。因为C/C++中的字符有3种类型:char、signed char和unsigned char。char类型的符号是由编译器指定的,一般是有符号的。在对字符进行hash时,应该先将字符转为无符号类型;否则当下标为负值时,就会出现越界访问。此外,还需要一个数组记录当前找到的只出现一次的字符,避免对原字符串进行第二次遍历。

    代码如下:

    #include "stdafx.h"
    #include <stdio.h>
    char GetChar(char str[])
    {
        if (str == NULL)
            return 0;
        const int size = 256;
        unsigned count[size] = { 0 };
        char buffer[size];
        char *q = buffer;
        const char* p;
        for (p = str; *p != 0; p++)
        {
            count[(unsigned char)*p]++;
            if (count[(unsigned char)*p] == 1)
            {
                *q = *p;
                q++;
            }    
        }        
        for (p= buffer; p < q;p++)
            if (count[(unsigned char)*p] == 1)
                return *p;
        return 0;
    }
    int main()
    {
        printf("%c
    ", GetChar("abac"));
        getchar();
        return 0;
    }

        效果如图:

  • 相关阅读:
    锻炼意志力
    iOS 函数积累
    iOS8新特性 计算 cell 的高度
    iOS 国际化支持 设置
    CALayer 方法属性整理
    好的 blog 整理
    xcode7 打包上传至 app store
    ios 适配 (字体 以及 控件)
    iOS 适配设计与切图
    iOS app 切图
  • 原文地址:https://www.cnblogs.com/cysolo/p/3622041.html
Copyright © 2011-2022 走看看