刷题笔记(2) 将数组中的数字组合成一个最小的数

题目描述

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

解题思路:

将数组中的数字拿出来,先转换为字符串。对于数组中相邻的两个字符串,例如: 32,321,因为

stringA = 32+321 = 32321

stringB = 321+32 = 32132

且stringA > stringB

所以为了得到最小的数字,需要将32和321调换位置。

对数组中所有的字符串都执行相同的操作即可。   本题目相当于重新定义了一种新的排序方法:

代码:

class Solution {
public:
string PrintMinNumber(vector<int> numbers)
{
int size = numbers.size();
string res;
if(size==0)
{
return res;
}
vector<string> container;
for(int i=0; i<size; i++)
{
stringstream ss;
ss << numbers[i];
string num2str = ss.str();
container.push_back(num2str);
}
for(int i=0; i<size-1; i++)
{
for(int j=i+1; j<size; j++)
{
string A = container[i] + container[j];
string B = container[j] + container[i];
if(A>B)
{
string tmp = container[i];
container[i] = container[j];
container[j] = tmp;
}
}
}
for(int i=0; i<size; i++)
{
res.append(container[i]);
}
return res;
}
};

 

注:

关于c++中数字和字符串的相互转化问题:

1.将数字转化为字符串:
a.   通过stringstream

int a = 100;
stringstream ss;
ss << a;
string str_a = ss.str(); // 将a转化为字符串

b.通过C++11提供的to_string方法:

std::string to_string(int value);
std::string to_string(long int value);
std::string to_string(long long int value);
std::string to_string(unsigned int value);
std::string to_string(unsigned long long int value);

2. 将字符串转化为数字

a. c++11提供了字符串(char*)转换为整数和浮点类型的方法:

atoi: 将字符串转换为 int
atol: 将字符串转换为long
atoll:将字符串转换为 long long
atof: 将字符串转换为浮点数

b. 还提供了stoxxx方法,将string转换为各种类型的数据:

std::string str = "1000";
int val = std::stoi(str);
long val = std::stol(str);
float val = std::stof(str);

-------------------------------------------------------------------------------------------------------------------

posted @   Alpha205  阅读(204)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示