题目描述:

输入一个正整数数组,把数组里面所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个,例如输入数组{3,32,321},输出的最小数字为321323

题目分析:

如果采用穷举法,把每一种可能都列举一遍,然后比较得到最小的一个字符串,那么将会有n的全排列个组合,也就是n的阶乘种情况,当n值很大时,时间复杂度是爆炸的,所以我们需要采用一种更小的方法,首先我们知道这样一个规律,对于字符串连接(+表示连接),如果A+B<B+A,则A<B,如果A+B>B+A,则A>B,如果A+B=B+A,则A=B,所以排序的时候按照从小到大的顺序,最后依次连接得到的值最小,下面按照这个思路得到代码:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std; bool cmp(int a, int b) {
string strA = to_string(a) + to_string(b);
string strB = to_string(b) + to_string(a);
return strA < strB;
} string MinNumber(vector<int>matrix) {
int length = matrix.size();
if (length == 0) { return “”; }
sort(matrix.begin(), matrix.end(), cmp);
string res;
for (int i = 0; i < length;i++) {
res += to_string(matrix[i]);
}
return res;
} int main() {
vector<int> num = {23,1,456};
string result = MinNumber(num);
cout << result << endl;
}

题目描述:

请实现一个函数,将一个字符串中所有的空格替换成“%20”,例如,将字符串“We Are Happy”替换成“We%20Are%20Happy”

题目分析:

我们依然先考虑从头到尾找到一个空格就插入”%20”这样一组符号,假如找到一个空格,我们会想将后面的值往后移两格,但是数组必然初始空间得设很大,如果采用向量,则需要扩容,如果我们首先通过一轮循环找到有多少个空格,然后计算需要用多大的空间也是可行的,比如有两个空格,那么我们就设比初值长度大4的空间,我们采用双指针控制,由于中间的值如果空格替换后会往后移,所以我们让指针从后往前检索

#include<iostream>
using namespace std; char *SpaceToStr(char a[], int start,int len){
int i = len;
int j = start;
while (j>=0) {
if (a[j]!=' ') {
a[i] = a[j];
i--;
j--;
}
else {
a[i] = '0';
a[i - 1] = '2';
a[i - 2] = '%';
i = i - 3;
j--;
}
}
return a;
} int main() {
char a[] = { "We Are Happy" };
int i = 0;
int count = 0;
while (a[i]!='\0') {
if (a[i] == ' ')
count += 1;
i++;
}
cout << i << endl;
char *b;
b = SpaceToStr(a, i, i+2*count);
cout << b << endl;
return 0;
}

最新文章

  1. jetty
  2. 2 个UserControl 的传值问题
  3. React入门--------组件API
  4. Asp.net设计模式笔记之二:应用程序分离与关注点分离
  5. C语言结构体(struct)使用方法
  6. 去除win8.1这台电脑中的6个库文件夹
  7. Win32多线程编程(2) — 线程控制
  8. Visual Studio 继续并运行上次的成功生成,未提示直接运行上一个版本解决方案!
  9. nyoj_600:花儿朵朵(树状数组+坐标离散化)
  10. Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
  11. MyBridgeWebViewDemo【集成JsBridge开源库的的封装的webview】
  12. day14
  13. Linux DNS 服务器安装、配置和维护
  14. centos cron 自动执行脚本异常 命令不生效的解决办法
  15. POJ2431 Expedition 贪心
  16. Java第三阶段学习(九、类加载器、反射)
  17. 使用OpenSSL转换X509 PEM与PFX证书
  18. Oracle之RMAN备份恢复1-基础篇
  19. Golang之Socket
  20. sersync+rsync=实时异步备份

热门文章

  1. java使用netty模拟实现一个类dubbo的分布式服务调用框架
  2. 动态设置WX滚动条的高度(非常重要)
  3. vue-cli 手脚架mock虚拟数据的运用,特别是坑!!!
  4. js对数字的处理:取整、四舍五入、数字与字符串的转换
  5. 为Docker Desktop安装kubernet-dashboard
  6. 爬虫(十五):Scrapy框架(二) Selector、Spider、Downloader Middleware
  7. Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
  8. keep-alive 用法 及activated,deactivated这两个生命周期函数
  9. C#中File和FileStream的用法----转载
  10. tomcat web服务的搭建