zoukankan      html  css  js  c++  java
  • 中兴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
  • 相关阅读:
    PL/SQL中判断字段为空
    ArrayList知识详解
    那些碰到过的异常
    Java中的==和equals( )方法
    String,StringBuilder和StringBuffer
    树莓派3b+_32位linux系统arm架构安装JDK
    [杂]右键拷贝文件路径
    [023]模板成员函数为什么不能是虚函数
    [杂]几个好玩的网址
    [022]c++虚函数、多态性与虚表
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/7429793.html
Copyright © 2011-2022 走看看