题目描述:

输入一个正整数数组,把数组里面所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个,例如输入数组{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;
}

剑指offer自学系列(四)的更多相关文章

  1. 剑指offer自学系列(三)

    题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变,例如{5,1,4,2 ...

  2. 剑指offer自学系列(二)

    题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内,数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次,请找出数组中任一个重复的数字,例如,如果输入长度为7的 ...

  3. 剑指offer自学系列(五)

    题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  4. 剑指offer自学系列(一)

    题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要 ...

  5. 剑指offer题目系列三(链表相关题目)

    本篇延续上一篇剑指offer题目系列二,介绍<剑指offer>第二版中的四个题目:O(1)时间内删除链表结点.链表中倒数第k个结点.反转链表.合并两个排序的链表.同样,这些题目并非严格按照 ...

  6. 剑指offer题目系列二

    本篇延续上一篇,介绍<剑指offer>第二版中的四个题目:从尾到头打印链表.用两个栈实现队列.旋转数组的最小数字.二进制中1的个数. 5.从尾到头打印链表 题目:输入一个链表的头结点,从尾 ...

  7. 剑指offer题目系列一

    本篇介绍<剑指offer>第二版中的四个题目:找出数组中重复的数字.二维数组中的查找.替换字符串中的空格.计算斐波那契数列第n项. 这些题目并非严格按照书中的顺序展示的,而是按自己学习的顺 ...

  8. 《剑指offer》第四十七题(礼物的最大价值)

    // 面试题47:礼物的最大价值 // 题目:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值 // (价值大于0).你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或 // 者向下 ...

  9. 《剑指offer》第四十五题(把数组排成最小的数)

    // 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3 ...

随机推荐

  1. 获取美拍视频的链接--JS分析

    美拍链接:https://www.meipai.com/ 找到视频链接的标签,源代码中没有这个div 通过Fiddler抓包,找到class="mp-h5-player-layer-vide ...

  2. Flask - 上下文管理(核心)

    参考 http://flask.pocoo.org/docs/1.0/advanced_foreword/#thread-locals-in-flask https://zhuanlan.zhihu. ...

  3. SQL注入之SQLmap

    注意:sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点. 1.

  4. nginx 打印详细请求

    log_format main escape=json '{ "@timestamp": "$time_iso8601", ' '"remote_ad ...

  5. 三 MyBatis配置文件SqlMapCofing.xml(属性加载&类型别名配置&映射文件加载)

    SqlMapCofing:dtd,属性加载有固定的顺序Content Model properties:加载属性文件 typeAliases:别名配置 1 定义单个别名:不区分大小写 核心配置: 映射 ...

  6. linux下的文件操作

    彻底删除文件 rm -rf + [文件目录 可相对可绝对] 是彻底删除而且linux无回收站 创建文件 touch + [文件名] 创建文件夹 mkdir + [文件夹名] 文件提权:chmod 77 ...

  7. 9月Win10杀软大PK

    导读 严格来说,Windows 10 并不存在“裸奔”一说,因为自带的 Defender 安全中心已经是越来越强大. 来自独立机构 AV-Comparatives 的 9 月份评测报告显示,Windo ...

  8. 十三、$.ajax、模态/非模态框、window.open()、href属性、submit()等提交请求优劣及问题解决方法

    1. $.ajax提交请求进行数据更新,并通过回调进行有效提示 function updateAudit(dispacher, control) { var currentpage = documen ...

  9. java虚拟机之内存分配

    Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配.同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收. JDK1.8之前的堆内存示意图: 从上图可以看出堆内存分为新 ...

  10. ch7对表单和数据表格使用样式

    对数据表格应用样式 1.表格特有的元素 caption:基本上用做表格的标题.summary:可应用于表格的标签,用来描述表格的内容(与image的alt文本相似) <table class=& ...