一道有趣的面试题
2012-08-13 17:42
330 查看
题目是这样的(c++):
已知一个字符指针 char *a="865410358748......6487534"; 里面由数字组成的大数字字符,现在的要求是
把这个字符串每个数字按照大小倒序排序。
刚一看到,浮现脑海里的解决办法是 使用冒泡排序
不过,仔细想了想,都是数组组成的字符串,肯定有特殊的地方,最后想到了这个办法:
字符串是由0-9字符组成的,所以外循环
for int i = 0; i<=9;i++{
}
因此,排序算法 转化为 查找 所有数字i的都排在前面
只需要 存储此时 的char 和当前转换的位置
如下:
char *a = "...";
char tmp;
int currentIndex = 0;
for int i = 0; i<=9;i++{
for(int j=i;j<a.lenght;j++){
if(a[j]==i){
currentIndex和j交换位置
currentIndex++;
}
}
}
}
当然上面的只是简单写了伪代码,实际上 字符指针所指向的内容是不能改变的,因为是保存在常量那里,所以还需要strcpy 出一个字符数组来操作 然后返回这个字符数组结果
已知一个字符指针 char *a="865410358748......6487534"; 里面由数字组成的大数字字符,现在的要求是
把这个字符串每个数字按照大小倒序排序。
刚一看到,浮现脑海里的解决办法是 使用冒泡排序
不过,仔细想了想,都是数组组成的字符串,肯定有特殊的地方,最后想到了这个办法:
字符串是由0-9字符组成的,所以外循环
for int i = 0; i<=9;i++{
}
因此,排序算法 转化为 查找 所有数字i的都排在前面
只需要 存储此时 的char 和当前转换的位置
如下:
char *a = "...";
char tmp;
int currentIndex = 0;
for int i = 0; i<=9;i++{
for(int j=i;j<a.lenght;j++){
if(a[j]==i){
currentIndex和j交换位置
currentIndex++;
}
}
}
}
当然上面的只是简单写了伪代码,实际上 字符指针所指向的内容是不能改变的,因为是保存在常量那里,所以还需要strcpy 出一个字符数组来操作 然后返回这个字符数组结果
相关文章推荐
- 一道有趣的面试题
- SQLserver一道微软的面试题 有趣真有趣
- C++::一道有趣的面试题(关于delete)
- 一道有趣的面试题——将int型数组强制转换为char*,再求strlen,涉及大小端
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】
- 一道有趣的面试题(自创)
- 有趣的一道面试题,求连续的0或者连续的1的最大次数
- 一道有趣的面试题
- 一道有趣的面试题,小鸟和火车的问题,again
- 白话经典算法系列之十 一道有趣的GOOGLE面试题
- 一道有趣的GOOGLE面试题
- 【算法】一道有趣的GOOGLE面试题
- 一道有趣的GOOGLE面试题 .
- 白话经典算法系列之十 一道有趣的GOOGLE面试题
- 【算法】一道有趣的GOOGLE面试题 --【解法2】
- 一道有趣的面试题
- 一道有趣的面试题
- 白话经典算法系列之十一 一道有趣的GOOGLE面试题 【解法2】
- 一道有趣的面试题和相关知识补充
- 一道有趣的C#面试题