zoukankan      html  css  js  c++  java
  • [CareerCup][Google Interview] 构造最大数

    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

    http://www.careercup.com/question?id=9334650

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

     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 #include <algorithm>
     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<string> &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<string> a;
    39     a.push_back("10");
    40     a.push_back("9");
    41     cout << solve(a) << endl;
    42 
    43     vector<string> 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<string> c;
    51     c.push_back("100");
    52     c.push_back("9");
    53     cout << solve(c) << endl;
    54 }
  • 相关阅读:
    TF400916错误修复办法
    架构优化
    .net 动态代理的泛型方法支持问题
    解决Kafka-1194问题
    SOA服务总线设计
    SOA初探
    重构心法——提高代码复用率
    重构心法——拆分大对象
    重构心法——你应该这样写方法
    反爬虫那些事儿
  • 原文地址:https://www.cnblogs.com/chkkch/p/2744514.html
Copyright © 2011-2022 走看看