2014UC的最后一道题题目:第一个只出现一次的字符[算法]
2013-10-14 21:04
218 查看
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
分析:这道题原本是2006年google的一道笔试题。这里UC加上了一个限制,就是不可以用for和while,本来这简直是一道送分题,当时教室热爆了,头脑也跟着发热,居然错掉了,实在是可惜,如果这里可以用for和while,那只需要用一个256大小的数组()就可以记录哪些元素不是第一次被访问的,问题就十分简单了,但是,这里不能用for,其实也很简单,可以用递归,类的构造函数,还有函数指针来模拟for循环就可以了.
这里先给出递归的办法:
上面的程序十分的简单,做的事情只是用递归模拟一个循环,这次笔试需要总结的问题十分之多,首先操作系统的内容十分不扎实,其次没有试过在纸上写代码,速度和准确率都十分糟糕.还需要继续修练.
分析:这道题原本是2006年google的一道笔试题。这里UC加上了一个限制,就是不可以用for和while,本来这简直是一道送分题,当时教室热爆了,头脑也跟着发热,居然错掉了,实在是可惜,如果这里可以用for和while,那只需要用一个256大小的数组()就可以记录哪些元素不是第一次被访问的,问题就十分简单了,但是,这里不能用for,其实也很简单,可以用递归,类的构造函数,还有函数指针来模拟for循环就可以了.
这里先给出递归的办法:
#include<iostream> using namespace std; int lower[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int upper[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; void SetLU(char* str) { if( *str =='\0' ) return ; if( 'a'<=*str && *str<='z') ++lower[(*str-'a')]; if( 'A'<=*str && *str<='Z') ++upper[(*str-'A')]; return SetLU(str+1); } char GetLU(char* str) { if( 'a'<=*str && *str<='z' && lower[*str-'a']==1) return *str; if('A'<=*str && *str<='Z' && upper[*str-'A']==1) return *str; return GetLU(str+1); } int main() { char str[]="abaccdeff"; SetLU(str); char c=GetLU(str); cout<<c<<endl; return 0; }
上面的程序十分的简单,做的事情只是用递归模拟一个循环,这次笔试需要总结的问题十分之多,首先操作系统的内容十分不扎实,其次没有试过在纸上写代码,速度和准确率都十分糟糕.还需要继续修练.
相关文章推荐
- 算法题目---第一个只出现一次的字符
- 算法题目-第一个只出现一次的字符
- 面试算法(三十五)第一个只出现一次的字符
- No17、题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。
- 程序员面试题精选100题(13)-第一个只出现一次的字符[算法]
- 微软算法100道题-----:在一个字符串中找到第一个只出现一次的字符
- 算法学习七----在一个字符串中找到第一个只出现一次的字符
- 【算法19】第一个只出现一次的字符
- 【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符
- 算法十二:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 华为OJ题目(一):找出字符串中第一个出现一次的字符
- 微软算法100题17 字符串中找到第一个只出现一次的字符
- 【算法】找到只出现一次的第一个字符
- 算法复习:第一个只出现一次的字符
- 程序员面试题精选100题(13)-第一个只出现一次的字符[算法]
- 【剑指Offer面试编程题】题目1283:第一个只出现一次的字符--九度OJ
- 每天学习一算法系列(17)(在一个字符串中找到第一个只出现一次的字符)
- 数据结构——算法之(007)(在一个字符串中找到第一个只出现一次的字符)
- 算法与数据结构面试题(21)-在一个字符串中找到第一个只出现一次的字符
- 九度题目1283:第一个只出现一次的字符