对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
2017-02-24 13:58
851 查看
// 第一种方法
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
//第二种方法
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h" #include <iostream> #include <vector> #include <string> using namespace std; class FirstRepeat { public: char findFirstRepeat(string A, int n) { // write code here vector<char> cVec; bool re = false; char ch='a'; for (int i = 0;i < A.size();i++) { for (int j = 0;j < cVec.size();++j) { if (A[i] == cVec[j]) { re = true; ch = A[i]; break; } } if (re == false) { cVec.push_back(A[i]); } else { break; } } return ch; } }; int main() { string str = "qywyer23tdd"; FirstRepeat fr; cout << fr.findFirstRepeat(str,str.size())<< endl; return 0; };
//第二种方法
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h" #include <iostream> #include <vector> #include <string> using namespace std; class FirstRepeat { public: char findFirstRepeat(string A, int n) { // write code here vector <int> cVec; char ch; for (int i = 0;i < 128;i++)//建立一个存储字符的数组;共有128个字符 { cVec.push_back(0); } for (int i = 0;i < n;i++) { int num = A[i]; cVec[num]= cVec[num]++; cout << "char:" << A[i] <<" num:"<< cVec[num] << endl; if (cVec[num] == 2) { ch= A[i] ; break; } } return ch; } }; int main() { string str = "kdbaaak"; FirstRepeat fr; cout << fr.findFirstRepeat(str,str.size())<< endl; return 0; };
相关文章推荐
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- C语言练习题每练 5 对于一个字符串,找到第一次重复出现的字符。
- 对于一个字符串,设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特点位置p,请返回旋转后的结果。
- 请编写一个方法,将字符串中的空格全部替换为“ ”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
- 给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
- 每天学习一算法系列(17)(在一个字符串中找到第一个只出现一次的字符)