題意:為防止洩密,將數碼0到9用全大寫的英文單詞表示並將所有字母打亂。密碼114表示為oneonefour,或ourneonfoe,fooonneeru等。給定乙個大寫字母表示的字串,要求算出原來的數字表示的密碼(非遞減)。
0-9對應的大寫英文單詞:通過觀察,有些單詞具有唯一的表示字母,如zero的z,two的w,six的x,那麼這幾個數字就可以輕易篩出來。zero, one,two, three, four, five,six, seven, eight, nine
首先記錄每個字母出現的個數,之後每當能發現乙個數字對應的字母時,就將這些字母的計數值減1。先篩出上述的幾個具有明顯標識的,然後看剩下的字母裡有哪些足以代表乙個數字,一步步篩出所有數字。
#include
using
namespace
std;
int cnt[100]; //直接用大寫的ascii碼做下標,方便索引
vector
ans; //存放結果
int main()
//6---six
t = cnt['x'];
for (int i = 0; i's']--; cnt['i']--; cnt['x']--;
ans.push_back(6);
}//7---seven
t = cnt['s'];
for (int i = 0; i's']--; cnt['e']--; cnt['v']--; cnt['e']--;cnt['n']--;
ans.push_back(7);
}//5---five
t = cnt['v'];
for (int i = 0; i'f']--; cnt['i']--; cnt['v']--; cnt['e']--;
ans.push_back(5);
}
//2---two
t = cnt['w'];
for (int i = 0; i't']--; cnt['w']--; cnt['o']--;
ans.push_back(2);
}//4---four
t = cnt['f'];
for (int i = 0; i'f']--; cnt['o']--; cnt['u']--; cnt['r']--;
ans.push_back(4);
}//3---three
t = cnt['r'];
for (int i = 0; i't']--; cnt['h']--; cnt['r']--; cnt['e']--;cnt['e']--;
ans.push_back(3);
}//1---one
t = cnt['o'];
for (int i = 0; i'o']--; cnt['n']--; cnt['e']--;
ans.push_back(1);
}//8---eight
t = cnt['g'];
for (int i = 0; i'e']--; cnt['i']--; cnt['g']--; cnt['h']--; cnt['t']--;
ans.push_back(8);
}//9---nine
t = cnt['i'];
for (int i = 0; i9);
sort(ans.begin(), ans.end()); //密碼是公升序的
cout
<< "case #"
<< kase << ':'
<< endl;
for (auto it = ans.begin(); it != ans.end(); ++it)
cout
<< *it;
cout
<< endl;
}return
0;}
字串加密解密
using system.security.cryptography using system.io 加密函式 static stirng encrypt string str descryptoserviceprovider descsp new descryptoserviceprovider ...
字串加解密
題目 1 對輸入的字串進行加解密,並輸出。2加密方法為 當內容是英文本母時則用該英文本母的後乙個字母替換,同時字母變換大小寫,如字母a時則替換為b 字母z時則替換為a 當內容是數字時則把該數字加1,如0替換1,1替換2,9替換0 其他字元不做變化。3 解密方法為加密的逆過程。輸入 輸入一串要加密的密...
字串加解密
題目描述 1 對輸入的字串進行加解密,並輸出。2 加密方法為 當內容是英文本母時則用該英文本母的後乙個字母替換,同時字母變換大小寫,如字母a時則替換為b 字母z時則替換為a 當內容是數字時則把該數字加1,如0替換1,1替換2,9替換0 其他字元不做變化。3 解密方法為加密的逆過程。介面描述 實現介面...