来自菜鸟的日程-------c语言基础篇8(大小端,回文,字符串逆转,左旋,第一个只出现一次的字母)
2018-11-17 00:59
127 查看
//大小端
//bool IsBig() //{ // short sh=0x1234; // char *p=(char *)&sh; // if (*p==0x34) // { // return false; // } // return true; //}
//字符串逆转(倒装句)
void Reverse(char *pbegin,char *pend) { assert(pbegin != NULL && pend != NULL); char tmp = 0; while(pbegin < pend) { tmp = *pbegin; *pbegin = *pend; *pend = tmp; pbegin++; pend--; } } char *ReverseSentence(char *str)//"jkdsjfkjf fdsfjs dslfj " { assert(str != NULL); char* pbegin = str; char *pend = str; while(*pend != '\0')//"abcdef\0" "fedcba\0" { pend++; } pend--; Reverse(pbegin,pend);//"" pbegin = str; pend = str; while(*pbegin != '\0') { if(*pbegin == ' ') { pbegin++; pend++; } else if(*pend == ' ' || *pend == '\0') { Reverse(pbegin,--pend); pbegin = ++pend; } else { pend++; } } return str; } int main() { char str[]="Here is Tulun"; ReverseSentence(str); printf("%s",str); return 0; }
//回文字符串
//bool pal(const char *str) //{ // assert(*str!=null); // const char *start=str; // const char *end=str+strlen(str)-1; // while(start<end) // { // if(*start==*end) // { // start++; // end--; // } // else // { // return false; // } // } // return str; //}
/*二分法查找
int Binarserach(int *arr,int key,int len) { int low =0; int high=len-1; while(low<=high) { //int mid=(low+high)/2; int mid=(low+high)>>1; if(arr[mid]==key) { return mid; } else if(mid<key) { low=mid+1; } else if(mid>key) { high=mid-1; } } return -1; } int main() { int arr[]={1,2,3,4,5,6}; int len=sizeof(arr)/sizeof(arr[0]); int key=4; Binarserach(arr,key,len); return 0; }
*/
第一个只出现一次的字符
char firstNotRepeate(char* str) { assert(str != NULL); const int SIZE = 256; int hashTable[SIZE] = {}; char *phash = str; while(*phash != '\0') { hashTable[*(phash++)]++; /*hashTable[*phash]++; phash++;*/ } phash = str; while(*phash != '\0') { if(hashTable[*phash] == 1) { return *phash; } phash++; } return '\0'; } int main() { char *str = "abcabdcad"; char ch = firstNotRepeate(str); printf("%c\n",ch); return 0; }
左旋数组
void Reverse(char *begin,char *end) { char tmp; while(begin < end) { tmp = *begin; *begin = *end; *end = tmp; begin++; end--; } } char *Left_Arry(char *str,int num) { assert(str != NULL && num > 0); int len = strlen(str); if(len > 0 && num < len) { char *firstbegin = str; char *firstend = firstbegin+num-1; char *secondbegin = firstend+1; char *secondend = str+len-1; Reverse(firstbegin,firstend); Reverse(secondbegin,secondend); Reverse(firstbegin,secondend); } return str; } int main() { char str[] = "abcdef"; printf("%s\n",Left_Arry(str,2)); return 0; }
相关文章推荐
- 来自菜鸟的日程-------c语言基础篇12(联合体---今天是今年第几天,筛选法求素数,第一个字符串中删除第二个中所有字符)
- 来自菜鸟的日程-------c语言基础篇16(魔方矩阵,单词个数,字符串拼接,比大小,数字字符串互相转换,行数,和为指定值的下标)
- 找出字符串中第一个只出现一次的字符——来自华为OJ平台测试基础篇
- 来自菜鸟的日程-------c语言基础篇15(数字类题型)
- python学习:找到字符串中第一个只出现一次的字母
- 【题目2】给定一个字符串数组,从中找出第一个只出现一次的字母
- 在字符串(字母)中找出第一个只出现一次的字母
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 来自菜鸟的日程-------c语言基础篇18(排序2----快排,堆排)
- (bitmap)给定一个字符串数组,从中找出第一个只出现一次的字母
- H面试程序(12): 输出字符串中第一个只出现一次的字母
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 来自菜鸟的日程-------c语言基础篇9(函数,递归)
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 来自菜鸟的日程-------c语言基础篇10(递归题型)
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 来自菜鸟的日程-------c语言基础篇11(结构体)
- 来自菜鸟的日程-------c语言基础篇13(内存)