• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 四个任意位数值组合最大数求解的程序实现

四个任意位数值组合最大数求解的程序实现

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了excel任意数值,围攻任意数值mod,数值平均数,数值平均数包括,数值平均数主要包括等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:四个任意位数值组合最大数求解的程序实现
描述:

假设有四个任意数 234, 345, 46, 1345,它们组合成的最大数是 46 345 234 1345;

这个简单,先取首位数值最大的那个数放在最前面,依次即可。

假设有四个任意数 234, 345, 46, 2345,它们组合成的最大数是 46 345 2345 234;

这个就需要进行不同数值内部每一位位的比较。

如此,该如何用程序具体地求解实现呢?


解决方案1:

int _tmain(int argc, _TCHAR* argv[])
{
    string arr[] = { "234", "345", "46", "2342" };
    string arr2[] = { "1", "2", "10", "11", "110" };

    sort(begin(arr2), end(arr2), [](string const & left, string const & right)
    {
        string l = left + right;
        string r = right + left;

        return l > r;
    });


    for (auto i : arr2)
    {
        cout << i << " ";
    }

    return 0;
}

隐含的问题是当两个字符串的起始都是一样的,并且一个字串是另一个字串的子串时,该如何排放这两个字符串的先后顺序。

解决方案2:

感谢@xiaoyifang提醒,之前的思路有问题。

这个题目核心在于两个数字串之间如何比较
通常思路是比较拼接后的串哪个大。即比较[串1拼串2] 和 [串2拼串1]的大小,从而决定哪个在前。
可以用循环指针的做法节省空间开销:
用两个指针分别指向串1串2的起始位置,不断右移比较。串的指针到尾部时循环回头部继续比对,直到满足return条件(两指针对应的char不等)或循环次数达到两串长度之和结束。

public static String maxCombine(String[] input) {
    Arrays.sort(input, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            for(int i = 0; i < o1.length() + o2.length(); i++) {
                char p1 = o1.charAt(i % o1.length());
                char p2 = o2.charAt(i % o2.length());
                if(p1 != p2) return p2 - p1;
            }
            return 0;
        }
    });

    String result = "";
    for(String s : input) {
        result += s + " ";
    }
    return result;
}

public static void main(String[] args) {
    String[] test = {"7347", "734"};
    System.out.println(maxCombine(test));
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 四个任意位数值组合最大数求解的程序实现

相关文章

  • 2017-06-07 上传片和创建块的那些请求算钱吗?
  • 2017-06-07 C#绘制透视图难题求解
  • 2017-06-07 虹猫蓝兔七侠传图片七牛客户端上传可以进行图片压缩裁剪吗
  • 2017-06-07 问一个抽奖算法问题
  • 2017-06-07 为何Redis用乐观锁,而MySQL数据库却没有
  • 2017-06-07 js正则匹配以固定字符串开头以固定字符串结尾
  • 2017-06-07 使用sortable进行排序,怎么获取数组前后变化?
  • 2017-06-07 python爬虫python两个列表添加
  • 2017-06-07 Python/Django开发工程师10K
  • 2017-06-07 一种内置TCP传输协议的数传模块

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ObjectC如何根据凭证下载文件
    • PythonDjango后台按钮不显示
    • PHP经常提示504GatewayTime-out
    • perl正则表达式请问大家写Perl都是用的什么编辑器啊
    • (python)怎么让Redis数据库读一个文件里的数据来初始化数据库?最佳实践是怎么样的?
    • laravel5一个页面中有两个列表,如何分开分页
    • (python)pyspider运行和age参数问题?
    • 七牛Robots的问题
    • 七牛callback调试问题
    • IndexError:listindexoutofrange

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有