博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CareerCup][Google Interview] 构造最大数
阅读量:5167 次
发布时间:2019-06-13

本文共 1408 字,大约阅读时间需要 4 分钟。

Given an array of elements find the largest possible number that can 

be formed by using the elements of the array. 

eg: 10 9 
ans: 910 
2 3 5 78 
ans: 78532 
100 9 
ans: 9100

把字符串排个序,比较方法是循环比较各个字符,如果对应位的字符大于另一个字符串的对应位则返回true,否则false。思想就是类似于要把尽可能大的数位放在更高位。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 bool comp(const string &lhs, const string &rhs) 8 { 9 int len = max(lhs.size(), rhs.size());10 11 for(int i = 0; i < len; i++)12 {13 int lIndex = i % lhs.size();14 int rIndex = i % rhs.size();15 if (lhs[lIndex] > rhs[rIndex])16 return true;17 else if (lhs[lIndex] < rhs[rIndex])18 return false;19 }20 21 return true;22 }23 24 string solve(vector
&a)25 {26 sort(a.begin(), a.end(), comp);27 28 string s;29 30 for(int i = 0; i < a.size(); i++)31 s = s + a[i];32 33 return s;34 }35 36 int main()37 {38 vector
a;39 a.push_back("10");40 a.push_back("9");41 cout << solve(a) << endl;42 43 vector
b;44 b.push_back("2");45 b.push_back("3");46 b.push_back("5");47 b.push_back("78");48 cout << solve(b) << endl;49 50 vector
c;51 c.push_back("100");52 c.push_back("9");53 cout << solve(c) << endl;54 }

转载于:https://www.cnblogs.com/chkkch/archive/2012/10/29/2744514.html

你可能感兴趣的文章
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Mysql MHA高可用集群架构
查看>>
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
android 学习资源网址
查看>>
qt安装遇到的错误
查看>>
java:Apache Shiro 权限管理
查看>>