C++ || Easy to Understand || Beginner Friendly
\tbool check(string str)\n\t{\n\t\tint x = 0;\n\t\tfor(int i=0;i<str.size();i++)\n\t\t{\n\t\t\tx=x*10+(str[i]-\'0\');\n\t\t}\n\t\tint z = (x&(x-1));\n\t\tif(z==
\tbool check(string str)\n\t{\n\t\tint x = 0;\n\t\tfor(int i=0;i<str.size();i++)\n\t\t{\n\t\t\tx=x*10+(str[i]-\'0\');\n\t\t}\n\t\tint z = (x&(x-1));\n\t\tif(z==0)return true;\n\t\treturn false;\n\t}\n\tvoid permute(string &str,int index,bool &ans)\n\t{\n\t\tif(index==str.size())\n\t\t{\n\t\t\tif(str[0]!=\'0\' && check(str))ans = true;\n\t\t\treturn;\n\t\t}\n\t\tfor(int i=index;i<str.size();i++)\n\t\t{\n\t\t\tswap(str[i],str[index]);\n\t\t\tpermute(str,index+1,ans);\n\t\t\tswap(str[i],str[index]);\n\t\t}\n\t}\n\tclass Solution {\n\tpublic:\n\t\tbool reorderedPowerOf2(int n) \n\t\t{\n\t\t\tbool ans = false;\n\t\t\tstring str = to_string(n);\n\t\t\tpermute(str,0,ans);\n\t\t\treturn ans;\n\t\t}\n\t};
['Backtracking', 'Bit Manipulation', 'Recursion', 'C']