算法题18 逆序(字符串、整数、单向链表)
2011-05-17 22:22
267 查看
1、反转字符串
即使“abcdef”反转结果为“fedcba”。可知,其实字符串反转就是交换i与n-i-1位置的字符。时间复杂度O(n/2)
代码如下:
// 反转字符串 void ReverseString(char* pStr) { int n = strlen(pStr); for(int i = 0; i < n/2; i++) { char t = pStr[i]; pStr[i] = pStr[n-i-1]; pStr[n-i-1] = t; } }
PS:C#中StringBuffer类中有现成的函数
2、反转整数
// 反转整数 int ReverseInt(int num) { int res = 0; while(num) { res = (res * 10 + num%10); num /= 10; } return res; }
3、反转单向链表
其实诀窍就是新建一个临时节点作为虚拟头节点,遍历每个节点,使之插入在临时节点之后struct ListNode { int key; ListNode* pNext; }; // 反转单向链表 void ReverseList(ListNode* pRoot) { if(pRoot == NULL || pRoot->pNext == NULL) return; ListNode temp; temp.pNext = pRoot; ListNode* pCur = pRoot->pNext; pRoot->pNext = NULL; // 把每个节点均插入在temp后,pRoot始终指向反转链表后的头节点 while(pCur) { temp.pNext = pCur; temp.pNext->pNext = pRoot; pRoot = temp.pNext; pCur = pCur->pNext; } }
相关文章推荐
- 每天一算法(链表逆序,子字符串等几个一起)
- 线性单向链表的逆序排列算法一例
- 算法-单向链表逆序
- C语言解字符串逆序和单向链表逆序问题的代码示例
- 将输入的若干整数逆序建立一单链表
- 大整数乘法,字符串分离和单链表逆转
- 数据结构-单向链表相关操作算法
- 每天学习一算法系列(20)(输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 将单向链表逆序
- 二哥学算法之单向链表
- 对一道“写一个算法实现字符串逆序存储,要求不另设串存储空间.”题目的总结!
- ProjectRuler 算法练习之 位数组成字符串相同的整数
- 百度笔试算法第二题:如何判断两个单向链表是否有相交,并找出交点
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 【数据结构与算法】链表1:单向链表(Java实现)
- [小算法] 使用递归将一个整数逆序放入一数组中
- 程序员面试50题(4)—把字符串转换成整数[算法]
- 基于链表:键盘输入若干个整数,按输入数据逆序建立一个带头结点的单链表
- 单向不循环链表就地转置算法
- 字符串转化为整数的算法改进及优化