赞
踩

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; } };

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。