一道有趣的面试题
题目是这样的(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 出一个字符数组来操作 然后返回这个字符数组结果