给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面 大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。 如:aAbBcCdD ---àabcdABCD
2017-08-05 18:40
931 查看
给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面
大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。
如:aAbBcCdD ---àabcdABCD
#include <stdio.h>
#include <stdlib.h>
int SmallToCaptial( char *str, char *outbuf )
{
char *p = str;
if (str == NULL || outbuf == NULL)
{
return -1;
}
while (*p)
{
if (*p >= 'a' && *p <= 'z')
{
*outbuf++ = *p; //小写字母放在前面
}
p++;
}
p = str;
while (*p)
{
if (*p >= 'A' && *p <= 'Z')
{
*outbuf++ = *p; //找到大写字母接在后面
}
p++;
}
*outbuf = '\0'; //加上结束标志
return 0;
}
int main()
{
char *str = NULL; //含有大小写字母的字符串
char outbuf[100] = {0}; //存放处理好的字符串
str = (char *)malloc(100 * sizeof(char));
printf ("please input a string (with capital letter and small letter):\n");
scanf ("%s", str);
printf ("The original string is %s\n", str);
if( SmallToCaptial(str, outbuf) == -1 )
{
printf ("function SmallToCaptial error!\n");
return -1;
}
printf ("The result is %s\n", outbuf);
free(str);
return 0;
}
大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。
如:aAbBcCdD ---àabcdABCD
#include <stdio.h>
#include <stdlib.h>
int SmallToCaptial( char *str, char *outbuf )
{
char *p = str;
if (str == NULL || outbuf == NULL)
{
return -1;
}
while (*p)
{
if (*p >= 'a' && *p <= 'z')
{
*outbuf++ = *p; //小写字母放在前面
}
p++;
}
p = str;
while (*p)
{
if (*p >= 'A' && *p <= 'Z')
{
*outbuf++ = *p; //找到大写字母接在后面
}
p++;
}
*outbuf = '\0'; //加上结束标志
return 0;
}
int main()
{
char *str = NULL; //含有大小写字母的字符串
char outbuf[100] = {0}; //存放处理好的字符串
str = (char *)malloc(100 * sizeof(char));
printf ("please input a string (with capital letter and small letter):\n");
scanf ("%s", str);
printf ("The original string is %s\n", str);
if( SmallToCaptial(str, outbuf) == -1 )
{
printf ("function SmallToCaptial error!\n");
return -1;
}
printf ("The result is %s\n", outbuf);
free(str);
return 0;
}
相关文章推荐
- 字符串训练02—给一个字符串,有大小写字母,要求写一个函数把小写字母放在前面 大写字母放在后面,尽量使用最小空间,时间复杂度。(即用指针做)。 如:aAbBcCdD ---àabcdABCD
- 谷歌:有一个由大小写组成的字符串,将其中的所有小写字母排在大写字母的前面
- 有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面
- 17、有一个由大小写组成的字符串,现在需要对他进行修改, 将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序)
- 使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小
- 数组:f[a,A,h,f,H,F]实现一个排序的效果:[A,a,F,f,H,h],先按字母顺序排列,再把每个字母的大写字母写在前面,小写放在后面。
- 7、编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
- 查找字符个数--查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小
- 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小 .
- 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
- 【每日一题】查找一个字符串中第一个只出现两次的字符。要求时间复杂度为O(N),空间复杂度为O(1)
- 写一个函数查找每个字符的个数,区分大小写,时间复杂度要求O(n)
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 有一个字符串,包含数字与字母,编程去除数字,要求:1.在原字符串操作2.使用指针处理
- 面试题:将一个字符串数组中的字母按照以下规则排列:表中任何单词的首字母与其前面单词的尾字母相同! 要求:字符串只由小写字母构成,且每个字符串长度在2-100之间
- (2)int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小