(程序员面试题)字符串处理之获取字符串的所有子串
来源:互联网 发布:centos selinux关闭 编辑:程序博客网 时间:2024/05/16 23:33
#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXLINE 4096void get_all_sub_str(const char *str, char *result[]){ int len = strlen(str); char *temp[MAXLINE]; int num = 0; for (int head = 0; head < len; head++) { for (int tail = head; tail < len; tail++) { temp[num] = (char *)malloc((tail - head + 2) * sizeof(char *)); memset(temp[num], 0x00, tail - head + 2); strncpy(temp[num], str + head, tail - head + 1 ); result[num] = temp[num]; num++; } }}int main(int argc, char *argv[]){ char *result[MAXLINE]; int num = 0; get_all_sub_str(argv[1], result); for(; result[num] != NULL; num++) { printf("result = %s\n", result[num]); } return 0;}
运行结果如下:
cheny@cheny-laptop:~$ gcc get_all_sub_str.c -std\=c99 -o get_all_sub_str
cheny@cheny-laptop:~$ ./get_all_sub_str abcde
result = a
result = ab
result = abc
result = abcd
result = abcde
result = b
result = bc
result = bcd
result = bcde
result = c
result = cd
result = cde
result = d
result = de
result = e
这里面打印出了abcde的所有子串,此处我并不认为ac,ace等不相连的字符串是abcde的子串,另外api里面malloc出来的内存没有free掉,因为free掉了会导致result的结果被清空,不过这个进程会在打印出结果之后就退出掉,malloc的内存会重新归还,但是这个不是一个良好的习惯,但是现在也暂时没有想到好的办法,这题写的比较烂,求各位大大指导一下,谢谢了!
- (程序员面试题)字符串处理之获取字符串的所有子串
- (程序员面试题)字符串处理之查找两个字符串的最大公共子字符串
- (程序员面试题)字符串处理之寻找最大不重复子串
- 《程序员面试题精选》05.输出一个字符串的所有子串
- (程序员面试题)字符串处理之字符反转
- (程序员面试题)字符串处理之字符替换
- (程序员面试题)字符串处理之循环右移
- (程序员面试题)字符串处理之单词反转
- 【字符串】面试题之替换子串
- 算法面试题之字符串子串
- (程序员面试题)字符串处理之找到第一个只出现一次的字符
- 面试题 对所有的连续字符串进行逆序处理
- 获取一个字符串的所有子串
- 最常见的程序员面试题(10)字符串的处理
- 面试题之微软 字符串的所有排列
- 对称子字符串的最大长度(程序员面试题精选100题)
- (程序员面试题)字符串处理之删除指定相连字符
- 字符串处理面试题;
- 解析2011年GCT逻辑试题(1)
- Win32多线程之线程对象与线程
- 真他么的冷
- 超详细LAMP环境搭建
- MySQL select 语句插入中文要注意的
- (程序员面试题)字符串处理之获取字符串的所有子串
- HDU 2544 (带权值的最短路 13.11.16)
- 通过Gradle来下载依赖的jar包
- 猜数字小游戏
- 关于sql 关闭资源常用两种方法的讨论
- Java中堆内存和栈内存详解
- Java内存泄露的理解与解决
- 求两个正整数的正差值
- iOS7 Xcode 5如何设置隐藏状态栏