
编程之法——思考题
_CodeCAT_
吾忘初心,方得始终!
展开
-
字符串的旋转
拜读了July所写的编程之法,收益良多,将学习过程中,编写的书中练习题的答案贴出来,因为感觉自己想的可能还有不足,大家交流一下。 1.1字符串的旋转 单词翻转 输入一个英文句子,翻转句子中单词的顺序。要求单词内的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,若输入“I am a student.”则输出“student. a am I”....原创 2016-03-07 22:55:39 · 1475 阅读 · 0 评论 -
链表回文
给定一个字符串,判断字符串是否是回文,很简单从两头向中间扫或是从中间向两头扫,依次对比即可。 对于链表无法完成从后向前的操作,因此解决的方法为先定位链表的中点,再将链表后半段置逆,最后利用两个指针依次逐一对比即可。void LinkList<Temp>::Reverse(int nStart, int nEnd) //将链表从第nStart到nEnd置逆 {...原创 2016-03-17 21:13:45 · 1095 阅读 · 0 评论 -
字符串的组合
字符串的所有组合 如果求字符串的所有排列,而是求字符串的所有组合,当输入的字符串是“abc”则它的组合有“a”“b”“c”“ab”“ac”“bc”“abc”。N个字符的全部组合问题可以分解成从N中1至N个字符组合,而对于从N中取M个数组合,可以分为以下两种情况: ①取这N个字符中的第一个字符,再从后面N-1个字符中取M-1个; ②不取这N个字符中的第一个字符,再从后面N-1个字符中取出...原创 2016-03-08 13:30:32 · 1485 阅读 · 0 评论 -
字符串的全排列
已知字符串中的字符是互不相同的,现在把他们任意排列(例如,若已知字符串是“ab”,则任意输出排列是“ab”“aa”“ba”“bb”),编程输出全部的所有组合。不同于输出全排列,只需要在函数中设置首位和后面各位的循环递归即可。同以上思路要从“ab”中延伸出“aa”“bb”可通过将首位赋值给后面各位循环递归完成(需要一定的限制条件)。/*字符串的全排列已知字符串的字符是互不相同的,现在...原创 2016-03-08 10:34:08 · 1703 阅读 · 0 评论 -
字符串的包含
如果两个字符串中的字符一样,出现的次数也一样,只是出现的顺序不一样,则可以认为这两个字符串是兄弟字符串。例如,“bad”和“abd”即为兄弟字符串。 在书中提到的一个检验是否包含的算法是位运算算法,可将长字符串用位运算的方法计算出一个“签名”(58位二进制表示,‘A’ASCII值为65,’Z’ASCII值为122,两个字符差值属于[0,58]),在逐一将端字符串中的字符放入查找。方法十分巧妙。 ...原创 2016-03-08 09:51:38 · 2232 阅读 · 0 评论