class Solution {
public:
int findNumberAppearingOnce(vector<int>& nums) {
//构造状态机,(0,0)->(1,0)->(0,1) 这三个状态遇到1时转换到下一个状态并是一个循环,即
//最后一个状态与第一个状态相连接,遇到0时是本身,每个数出现3次故而最后都将到第一状态
//出现一次的那个数将变为状态二
int one = 0,two = 0;
for(auto x:nums){
one = (one ^ x) & ~two;
two = (two ^ x) & ~one;
}
return one;
}
};