本文主要是介绍LintCode 570 给一个由 1 - n 的整数随机组成的一个字符串序列,其中丢失了一个整数,请找到它。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
情况特殊,考虑逻辑即可
class Solution {
public:/*** @param n: An integer* @param str: a string with number from 1-n in random order and miss one number* @return: An integer*/int findMissing2(int n, string &str) {// write your code herevector<int> a(10);vector<int> b(10);vector<int> c;string str1;for(int i=1;i<=n;i++){str1.append(std::to_string(i));}for(int i=0;i<str.size();i++){a[str[i]-'0']+=1;}for(int i=0;i<str1.size();i++){b[str1[i]-'0']+=1;}for(int i=0;i<10;i++){if(b[i]-a[i]==1){c.push_back(i);}else if(b[i]-a[i]==2){c.push_back(i);c.push_back(i);}}if(c.size()==1){return c[0];}else if(c.size()==2){int x=c[0]+10*c[1];int y=c[1]+10*c[0];if(x>n) return y;if(y>n) return x;if(str.find(std::to_string(y))==string::npos) return y;return x;}}
};
这篇关于LintCode 570 给一个由 1 - n 的整数随机组成的一个字符串序列,其中丢失了一个整数,请找到它。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!