请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
// test20.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<string.h>
#include<deque>
#include <forward_list>
using namespace std;
class Solution
{
public:
//Insert one char from stringstream
void Insert(char ch)
{
str = str + ch;//逐个插入字符
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce()
{
// if (str == "") return NULL;
int flag = 0;
int label = -1;
for (int i = 0;i < str.size();i++)
{
flag = 0;//flag==0,表示没有重复元素
for (int j = 0;j < str.size();j++)
{
if (i != j&&str[i] == str[j])//有重复元素,则跳出循环
{
flag = 1;
break;
}
}
if (flag == 0)//判断有无重复元素,0表示无重复元素
{
label = i;
break;
}
}
if (label == -1)return '#';
return str[label];
}
void print()
{
cout << "str:" << str << endl;
}
private:
string str;
};
int main()
{
//vector<int> vec = { 49,38,65,97,76,13,27,49};
Solution so;
so.print();
so.Insert('g');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
so.Insert('o');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
so.Insert('o');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
so.Insert('g');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
so.Insert('l');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
so.Insert('e');
cout << "第一个不重复的字符是:" << so.FirstAppearingOnce() << endl;
// so.print();
return 0;
}
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。的更多相关文章
- 有两个数a,b,请写一个函数交换a,b
题目:有两个数a,b,请写一个函数交换a,b,具体实现如下: #include<stdlib.h> #include<stdio.h> int swap(int * pA, i ...
- 给出一个数组A,找出一对 (i, j)使得A[i] <= A[j] (i < j)并且j-i最大
题目:给出一个数组A,找出一对 (i, j)使得A[i] <= A[j] (i <= j)并且j-i最大 ,若有多个这样的位置对,返回i最小的那一对. 最直接的想法就是对于每一个 i 从数 ...
- 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length
// 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
一.题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 二.解题思路 1)简单暴力解法 ...
- 2018.3.12 Leecode习题 给定一个整数数列,找出其中和为特定值的那两个数。
给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = 9; 因为 ...
- 有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a
题目:有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a,具体实现如下: #include<stdlib.h> #include ...
- 请实现一个函数,把字符串中的每一个空格替换成“%20”,比如输入 “We are Happly。” 则输出“we%20are%20happy。”
请实现一个函数,把字符串中的每一个空格替换成"%20",比如输入 "We are Happly." 则输出"we%20are%20happy. &q ...
- 【c语言】字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成“%20”
// 字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". // 比如输入"we are happy.",则输出"we%20are ...
随机推荐
- ADO.NET(很精彩全面)
记录一下地址方便以后看http://www.cnblogs.com/liuhaorain/archive/2012/02/06/2340409.html
- android中常用菜单(menu)的基本知识
(一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...
- windows下文件名非法字符
/ \ : * ? " < > | / \如果用作文件名,会产生路径问题.因为绝对路径用 \ ; 相对路径用 / ;
- 在mac上安装pydev for eclipse时,在eclipse的Preferences中无法显示出来的解决方法
参考http://pydev.org/manual_101_install.html 中的说明,该插件依赖java7,在我安装eclipse之前并没有安装jdk,打开eclipse之后,自动安装了一个 ...
- jQuery两句话实现HTML转义与反转义
$('<div>').text('<a>').html() 结果:<a> $('<div>').html('<a>').text() 结果: ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- Java 控制台执行带自定义包定义的类,出现“Exception in thread "main" java.lang.NoClassDefFoundError: ConnectSQLServer (wrong name: sine/ConnectSQLServer)”
1.先说明一下代码实现:自定义package sine, 源代码保存路径为:E:\JSP\HibernateDemo\HibernateDemoProject\src\sine\ConnectSQLS ...
- 通过DB_LINK按照分区表抽取数据
DB:11.2.0.3.0OS:oracle-linux 5.7 建表语句:create table YOON.YOON_HIS( c_id NUMBER not null ...
- js 与或运算符 || && 妙用(转)
原文转自:http://www.jb51.net/article/21339.htm 首先出个题: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头: 成长速度为10显示2个箭头: 成长速度为1 ...
- Java使用FileLock实现Java进程互斥锁
原理:JDK的nio包中FileLock实现类似Linux fcntl的文件锁, 可使文件被进程互斥访问. 借助此功能, 可以实现强大的Java进程互斥锁, 从而在应用层面保证同一时间只有惟一的Ja ...