题目,

这个题目其实就是各种状态之间的转换,写的更好的话,可能还需要一个状态机变量。
这里直接就是在一个函数里面进行转换了。
代码比较简单,
代码如下,
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
class CombinationLock
{
size_t current_idx {0};
vector<int> combination;
public:
string status;
CombinationLock(const vector<int> &combination) : combination(combination), status{"LOCKED"} {
}
void enter_digit(int digit)
{
if(status.compare("LOCKED") == 0) {
status = "";
}
if(current_idx >= combination.size()) {
status = "ERROR";
return;
}
if(status == "ERROR") {
return;
}
if(combination[current_idx] == digit) {
ostringstream oss;
oss << digit;
status += oss.str();
}else {
status = "ERROR";
return;
}
if(current_idx == combination.size()-1) {
status = "OPEN";
}
++current_idx;
}
};
网友评论