• 中兴2018届应届生在线编程测验 数字的最小排列


    题目:根据给定的"锁定密码"(一串数字),可以计算出"解锁秘钥",它是该数中数字的最小排列(数量上),且它不会从零开始.

    输入:一串数字lockingKey,约束-100000<= lockingKey <= 100000

    输出:返回一个表示解锁的整数

    实例:

    输入:

    lockingKey = 706;

    输出:

    607

    函数形式

      long findUnlock(long lock)

      {

      }

    思路分析:

     题中表述的是数字的最小排列问题,且第一位不能为0.可以先把这些数字存到vector中,然后从小到大排列,排列完如果第一位是0的话,把第一个非0的数字和第一位交换.这样就基本实现了.

     

     参考程序:

    
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    long findUnlock(long lock)
    {
        if (lock < 0)
        {
            lock = -lock;
        }
        string str;
        str = to_string(lock);    //倘若是VS2010下,要求to_string的参数为long long 类型,要改成long long(lock)   //转化为string类型,方便处理.
        vector<int> ivec;
        int val;
        for (int i = 0; i < str.size(); i++)
        {
            val = str[i] - '0';  //这是一个技巧,把数字字符改为真正的数字
            ivec.push_back(val);
        }
        sort(ivec.begin(), ivec.end());
        int j;
        if (ivec[0] == 0)
        {
            for (int i = 0; i < ivec.size(); i++)
            {
                if (ivec[i] != 0)
                {
                    j = i;
                    break;
                }
            }
            swap(ivec[0], ivec[j]);  ///若第一位为0,把第一个非0的数字和第一位交换.注意放在if里面.要拿非特殊也验证下
        }
        long s = 0;
        for (int i = 0; i < ivec.size(); i++)
        {
            s += pow(10, ivec.size() - i - 1)*ivec[i];    //倘若是VS2010下,pow不能两个都是int,有pow(double,int)的用法,要改成pow(10.0,...)
        }
        return s;
    }
    
    int main()
    {
        cout << findUnlock(-83047) << endl;
        return 0;
    }
    
    
    
     
    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    JS实现菜单滚动到一定高度后固定
    原生js如何获取某一元素的高度
    在Vue项目中,添加的背景图片在服务器上不显示,如何处理
    单行文本截断 text-overflow
    使用line-height垂直居中在安卓手机上效果不好
    css 苹方字体
    十二. for of 示例 (可以解决大多数应用场景)
    npm详解
    webpack搭建服务器,随时修改刷新
    探讨弹性布局Flexible Box
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/7429793.html
Copyright © 2020-2023  润新知