当前位置:   article > 正文

LEETCODE 164破解闯关密码

LEETCODE 164破解闯关密码

请添加图片描述

class Solution {
public:

    string crackPassword(vector<int>& password) {
//在比较两个字符串大小时,其实是按照字典序逐个比较它们的字符。首先比较两个字符串的第一个字符,如果它们不相等,则可以根据它们的 ASCII 码大小确定它们的大小关系。如果它们相等,则继续比较它们的下一个字符,以此类推,直到找到两个不相等的字符,或者其中一个字符串比较完了。

// 解题关键:注意到对于两个相同长度的数字串,它们之间的大小关系等价于对应位置上字符的大小关系,因此可以将数字串转化成字符串,然后对字符串进行排序。具体地,我们可以将数字转化成字符串,然后将字符串按照字典序从小到大排序,最后按照排序后的顺序将字符串拼接起来即可。
        vector<string> password_str(password.size());
        for(int i=0;i<password.size();i++){
            password_str[i]=to_string(password[i]);
        }
        // 趟数
        for(int i=1;i<password.size();i++){
            string tmp=password_str[i];
            int j;
            j=i;
            while(j>0 && (password_str[j-1]+tmp)>(tmp+password_str[j-1])){
                password_str[j]=password_str[j-1];
                j-=1;
            }
            password_str[j]=tmp;
        }
        string result;
        for(int i=0;i<password.size();i++){
            result += password_str[i];
        }
        return result;

    }
};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

请添加图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号