编程算法 - 第一个仅仅出现一次的字符 代码(C)
第一个仅仅出现一次的字符 代码(C)
本文地址: http://blog.csdn.net/caroline_wendy
题目: 在字符串中找出第一个仅仅出现一次的字符.
字符是char类型, 所以匹配256种可能, 採用hash表, 计算出现的次数, 再找到第一次出现的字符.
代码:
/*
* main.cpp
*
* Created on: 2014.6.12
* Author: Spike
*/ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h>
#include <stdlib.h>
#include <string.h> char FirstNotRepeatingChar (char* pString) {
if (pString == NULL)
return '\0';
const int tableSize = 256;
unsigned int hastTable[tableSize];
for (unsigned int i=0; i<tableSize; ++i)
hastTable[i] = 0;
char* pHashKey = pString;
while (*pHashKey != '\0')
hastTable[*(pHashKey++)]++;
pHashKey = pString;
while (*pHashKey != '\0') {
if (hastTable[*pHashKey] == 1)
return *pHashKey;
pHashKey++;
}
return '\0';
} int main(void)
{
char pString[] = "abaccdeff";
char result = FirstNotRepeatingChar (pString);
printf("result = %c\n", result); return 0;
}
输出:
result = b
编程算法 - 第一个仅仅出现一次的字符 代码(C)的更多相关文章
- 【剑指offer】第一个仅仅出现一次的字符
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27106997 题目描写叙述: 在一个字符串(1<=字符串长度<=10000,所 ...
- 编程算法 - 萨鲁曼的军队(Saruman's Army) 代码(C)
萨鲁曼的军队(Saruman's Army) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 直线上有N个点, 每个点, 其距离为R以内的区域里 ...
- 编程算法 - 数字在排序数组中出现的次数 代码(C)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/36869869 数字在排序数组中出现的次数 代 ...
- UE4蓝图编程的第一步
认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色 ...
- PLC编程算法
PLC编程算法(一) 01 开关量也称逻辑量,指仅有两个取值,0或1.ON或OFF.它是最常用的控制,对它进行控制是PLC的优势,也是PLC最基本的应用. 开关量控制的目的是,根据开关量的当前输入组合 ...
- 为什么qt成为c++界面编程的第一选择
为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...
- 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...
- Rx编程的第一步是将native对象转换为monad对象
Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.
随机推荐
- 房费制 之 登录BUG
声明:以下内容只有当你登录到一个username同时,学生不能申请多次登录. 说是BUG,事实上这也不是一个BUG,仅仅是想出一个办法,解决一个大家好多人都没有解决的问题.以下就给大家 ...
- Extjs Web Desktop申请书
今天我Web Desktop应用基本完成.多语言支持.现有asp,php,jsp版本号. 废话拍了几张照片让大家有一个直观的了解: watermark/2/text/aHR0cDovL2Jsb2cuY ...
- android关键知识
1.handler 与Looper 与MessageQueue .Message关系 handler:是处理主线程(ui线程)处理耗时操作的线程,通过post message到MessageQueue ...
- css两种动态显示星星等级的比较(一星、两星、三星、四星、五星)
原文:css两种动态显示星星等级的比较(一星.两星.三星.四星.五星) 以下是显示后的图片,相信在很多网站上都能看到这种效果,目前我知道两种实现方式 1.background-position加上一张 ...
- 设计模式-----观察者模式(Obsever)
它定义了对象之间一对多的依赖关系.因此,.当一个对象的状态变化,对吸毒成瘾者,他将收到通知和更新自己主动. 观察者模式的组成: 抽象主题角色:把全部对观察者对象的引用保存在一个集合中.抽象主题提供一个 ...
- LayoutDemo
package swing.ui; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButt ...
- Oracle Net Listener Parameters (listener.ora)(转)
12/20 7 Oracle Net Listener Parameters (listener.ora) This chapter provides a complete listing of th ...
- 实现一个简单的boot
1.汇编语言.分别汇编器和链接as86和ld86.码如下面: .globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: . ...
- Android 应用程序窗口显示状态操作(requestWindowFeature()的应用)
我们在开发程序是常常会须要软件全屏显示.自己定义标题(使用button等控件)和其它的需求,今天这一讲就是怎样控制Android应用程序的窗口显示. 首先介绍一个重要方法那就是requestWi ...
- cocos2dx --- button点击放大中心
自定义简单button,直接附着到代码: MenuItem* MenuItemNode::create( const char* normal,Ref* target,SEL_MenuHandler ...