SELF DESCRIBING NUMBERS题解

来源:互联网 发布:k线绘图软件 编辑:程序博客网 时间:2024/05/16 16:53

这一题要采用逆向思维,不要去判断每个数字出现的有没有这么多,而是去统计数字出现的次数,反过来构造出对应的描述数字,如果描述数字跟原来的数字相等,那就是self described的数

#include <iostream>#include <fstream>#include <string>using namespace std;string self_describe(string lineBuffer) {string res = "";size_t size = lineBuffer.size();int b[10] = {0};for(size_t i=0; i<size; i++) {++b[lineBuffer[i]-'0'];}for(size_t i=0; i<size; i++) {res += (b[i]+'0');}return res;}int main (int argc, char* argv[]) {ifstream file;string lineBuffer;file.open(argv[1]);while (!file.eof()) {getline(file, lineBuffer);if (lineBuffer.length() == 0)continue; //ignore all empty lineselse {if(lineBuffer == self_describe(lineBuffer)) cout << "1\n";elsecout << "0\n";}}return 0;}


0 0
原创粉丝点击