#include <stdio.h> #include <string.h> #define false 0 #define true 1
/*判断一个字符串是不是回环字符串函数*/ int isok(char *str) { int len = strlen(str); int i = 0, j = len – 1; while (i < j) { if(str[i] != str[j]) return false; i++; j–; } return true; } /*如果不是回环字符串,在字符串的头部添加字符串,让这个字符串成为回环字符串*/ int addhead(char *str) { int len = strlen(str); printf(“str num = %d\n”,len); char tmp[2*len]; int pos = 0, j = len – 1; while(pos < len -1) { tmp[pos++] = str[j--]; printf(“xun huan\n”); } tmp[pos] = ‘\0′; strncat(tmp,str,len); printf(“tmp string is %s\n”,tmp); if(isok(tmp)) printf(“successful \n”); } /*如果不是回环字符串,在函数的尾部添加字符串,让这个字符串成为回环字符串*/ int addtail(char *str) { int len = strlen(str); int i=0, k=0,j; char tmp[2*len]; while (i < len ) { tmp[i++] = str[k++]; } j = i; i = 0; k = len – 1; while(i < len -1) { tmp[j++] = str[k--]; } tmp[j] = ‘\0′; printf(“tmp = %s\n”, tmp); if(isok(tmp)) printf(“successful \n”); } /*测试回环函数的主函数*/ int main(int argc, char *argv[]) { char *str = “abc”; int num = isok(str); if(num == 1) { printf(“this is string\n”); } else { printf(“this is the not string\n”); num = addhead(str); num = addtail(str); } return 0; } |
|
来自: 看风景D人 > 《面试笔试常用算法》