假如一個句子含有所有字母,就叫做pangrams. 比如:
"A quick brown fox jumps over
the lazy dog" 就是一個pangrams.
要求寫一個C++函數, string getMissingLetters(const string&
sA)
這裡sA 代表一個輸入的句子。
假如sA 不是pangrams, 那麼函數應該輸出所有sA缺失的字母。 輸出的字母應該按字典順序排列。
btw:
字母不區分大小寫,最後輸出小寫字母
#include <iostream><br />#include <string><br />using namespace std;<br />string getMissingLetters(const string& sA);<br />int _tmain(int argc, _TCHAR* argv[])<br />{</p><p>//string strSentence = "jumps over the lazy dog";<br />string strSentence = " ";<br />string missingLetters = getMissingLetters(strSentence);<br />cout << missingLetters << endl;<br />return 0;<br />}<br />string getMissingLetters(const string& sA)<br />{<br />int letterFre[256] = {0};<br />int occurLetterNum = 0;<br />for (int i = 0;i<sA.size();i++)<br />{<br />char ch = sA[i];<br />//如果是大寫字母,先轉成小寫<br />if (ch >= 'A' && ch <= 'Z')<br />{<br />ch = 'a' + (ch - 'A');<br />}<br />//非字母的過掉<br />if (ch < 'a' || ch > 'z' )<br />{<br />continue;<br />}<br />//統計出現過的字母的個數<br />if (letterFre[(int)ch] == 0)<br />{<br />occurLetterNum ++;<br />}<br />letterFre[(int)ch] ++;<br />}<br />//沒出現的字母當然是26 - occurLetterNum<br />string missLetters(26 - occurLetterNum,' ');</p><p>//將沒出現的字母們拎出來<br />int count = 0;<br />for (int i = 'a';i <= 'z';i++)<br />{<br />if (letterFre[i] == 0)<br />{<br />missLetters[count++] = (char)i;<br />}<br />}<br />return missLetters;<br />}